有没有一种方法可以智能地删除零行以获得python中的方阵?

时间:2019-07-11 22:47:06

标签: python numpy matrix

在线性代数中,Determinant是一个标量值,可以根据方矩阵的元素进行计算,并且可以对矩阵描述的线性变换的某些属性进行编码。

要计算行列式,需要切除一些行或列的矩阵。

例如矩阵A

A = np.array([[1,1],[2,2],[0,0]])
A
array([[1, 1],
       [2, 2],
       [0, 0]])

需要剪切最后一行

B = A[:2]
B
array([[1, 1],
       [2, 2]])

然后,行列式运算可用。

np.linalg.det(B)
0.0

需要剪切的另一个矩阵是列而不是行

C = A.T
C
array([[1, 2, 0],
       [1, 2, 0]])

那么,确定行或列的切割是不确定的,有没有一种方法可以智能地删除零行以在python中获得平方矩阵?

2 个答案:

答案 0 :(得分:3)

要删除全为零的行或列(即选择具有任何非零值的行或列),可以使用以下命令。

A = np.array([[1, 2],
               [0, 0],
               [4, 5]])
B_rows = A[(A != 0).any(1), :]  # Remove rows that are all zero.
>>> B_rows
array([[1, 2],
       [4, 5]])

A = np.array([[1, 2, 0],
               [3, 4, 0]])
B_cols = A[:, (A != 0).any(0)]  # Remove columns that are all zero.
>>> B_cols
array([[1, 2],
       [3, 4]])

答案 1 :(得分:1)

编辑:您应该使用numpy.delete

A = np.delete(A,2,1)

第一个参数是需要剪切的numpy数组。第二个参数是您要剪切的列的索引。最后一个参数是轴,如果要删除行(如您在示例中所做的那样),则将0放置在那里,但是如果要删除列,则将1放置在那里。