Python 从numpy数组中删除行和列

Python 从numpy数组中删除行和列,python,numpy,Python,Numpy,我有这样一个数组: a = np.array([[1,2,3,4,5], [6,0,8,9,10], [11,12,13,14,15], [16,0,0,19,20]]) 我想删除有0值的列和行,因此新的a应该如下所示: array([[1,4,5], [11,14,15]]) 如何使用索引来解决这个问题 >>> a[(a != 0).all(axis=1)][:,(a != 0).all(axis=0)] array([[ 1, 4, 5], [11,

我有这样一个数组:

a = np.array([[1,2,3,4,5],
[6,0,8,9,10],
[11,12,13,14,15],
[16,0,0,19,20]])
我想删除有
0
值的列和行,因此新的
a
应该如下所示:

array([[1,4,5],
[11,14,15]])
如何使用索引来解决这个问题

>>> a[(a != 0).all(axis=1)][:,(a != 0).all(axis=0)]
array([[ 1,  4,  5],
       [11, 14, 15]])
查找
a
中非零的元素非常容易:

>>> (a != 0)
array([[ True,  True,  True,  True,  True],
       [ True, False,  True,  True,  True],
       [ True,  True,  True,  True,  True],
       [ True, False, False,  True,  True]], dtype=bool)
然后,您可以使用指定轴的
all
,查找要保留的行:

>>> (a != 0).all(axis=1)
array([ True, False,  True, False], dtype=bool)
列的情况也一样:

>>> (a != 0).all(axis=0)
array([ True, False, False,  True,  True], dtype=bool)

谢谢你的解释!