所以我有一个非常大的二维numpy数组,比如:
array([[ 2, 4, 0, 0, 0, 5, 9, 0],
[ 2, 3, 0, 1, 0, 3, 1, 1],
[ 1, 5, 4, 3, 2, 7, 8, 3],
[ 0, 7, 0, 0, 0, 6, 4, 4],
...,
[ 6, 5, 6, 0, 0, 1, 9, 5]])
我想快速删除数组中np.sum(row[2:5]) == 0
的每一行
我能想到的唯一方法是使用for循环,但是当有数百万行时,这需要很长时间。此外,这需要限制在Python2.7中
Tags:
您对第2列到第5列感兴趣
您希望找到每行中这些列的总和
这些是符合条件的行
使用boolean indexing选择这些行
布尔表达式可用作索引。您可以使用它们来遮罩阵列。你知道吗
这是在做什么:
inputarray[:, 2:5]
选择要求和的所有列axis=1
意味着我们对列进行求和True
另一种解决方案是使用
numpy.apply_along_axis
计算和并将其转换为布尔值,然后将其用于索引:我们只是把这个和转换成布尔值,因为任何不是0的数字都是
True
。你知道吗相关问题 更多 >
编程相关推荐