从numpy数组中删除行和列

时间:2015-12-04 12:14:35

标签: 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]])

如何使用索引来解决这个问题?

1 个答案:

答案 0 :(得分:2)

>>> a[(a != 0).all(axis=1)][:,(a != 0).all(axis=0)]
array([[ 1,  4,  5],
       [11, 14, 15]])

查找非{0}的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)