我有一个矩阵 A
,我想得到两个矩阵 U
和 L
,其中 U
包含 A
的上三角元素(包括对角线上方的所有元素,但不包括对角线上的元素),而 L
包含下三角元素(包括对角线下方的所有元素,但不包括对角线上的元素)。有没有 numpy
的方法可以做到这一点?
例如
A = array([[ 4., 9., -3.], [ 2., 4., -2.], [-2., -3., 7.]])U = array([[ 0., 9., -3.], [ 0., 0., -2.], [ 0., 0., 0.]])L = array([[ 0., 0., 0.], [ 2., 0., 0.], [-2., -3., 0.]])
回答:
尝试使用 numpy.triu
(上三角矩阵)和 numpy.tril
(下三角矩阵)。
代码示例:
np.triu([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])array([[ 1, 2, 3], [ 4, 5, 6], [ 0, 8, 9], [ 0, 0, 12]])