在线性代数中,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中获得平方矩阵?
答案 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放置在那里。