8

我有一个大矩阵,我想检查它的某处是否有一列全为零。如何在 numpy 中做到这一点?

4

2 回答 2

16

这是一种方法:

In [19]: a
Out[19]: 
array([[9, 4, 0, 0, 7, 2, 0, 4, 0, 1, 2],
       [0, 2, 0, 0, 0, 7, 6, 0, 6, 2, 0],
       [6, 8, 0, 4, 0, 6, 2, 0, 8, 0, 3],
       [5, 4, 0, 0, 0, 0, 0, 0, 0, 3, 8]])

In [20]: (~a.any(axis=0)).any()
Out[20]: True

如果您后来决定需要列索引:

In [26]: numpy.where(~a.any(axis=0))[0]
Out[26]: array([2])
于 2013-04-18T20:43:38.960 回答
4

创建一个equals 0蒙版 ( mat == 0),并all在其上沿轴运行。

(mat == 0).all(axis=0).any()
于 2013-04-18T20:43:01.707 回答