我有一个非常稀疏的数组,如下图所示:
arr = array([[0, 1, 0, 0, 0, 2],
[0, 0, 2, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 7, 0, 0, 4, 0]])
由于索引0和3的列都是零,我想删除它们并得到结果:
array([[1, 0, 0, 2],
[0, 2, 0, 0],
[0, 0, 0, 0],
[7, 0, 4, 0]])
我以为我可以通过
查看每一栏for i in len(arr):
if arr[:, i] != 0:
newarr = np.column_stack((newarr, arr[:, i]))
但我遇到一个错误,它教我使用a.all()..
答案 0 :(得分:3)
使用简单的索引,方法是选择至少有一个非零项目的列(在第一个轴上使用any()
):
In [9]: arr[:, arr.any(0)]
Out[9]:
array([[1, 0, 0, 2],
[0, 2, 0, 0],
[0, 0, 0, 0],
[7, 0, 4, 0]])