我有一个这样的数组:
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]])
如何使用索引来解决这个问题?
答案 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)