This question already has answers here:
remove zero lines 2-D numpy array

(4个答案)


5年前关闭。




我正在尝试编写一个函数来删除其中所有值为零的所有行。
这不是我的代码,而是我正在使用的想法的示例:
import numpy as np
a=np.array(([7,1,2,8],[4,0,3,2],[5,8,3,6],[4,3,2,0]))
b=[]

for i in range(len(a)):
    for j in range (len(a[i])):
        if a[i][j]==0:
            b.append(i)

print 'b=', b
for zero_row in b:
    x=np.delete(a,zero_row, 0)

print 'a=',a

这是我的输出:
b= [1, 3]
a= [[7 1 2 8]
 [4 0 3 2]
 [5 8 3 6]
 [4 3 2 0]]

如何摆脱b中带有索引的行?
抱歉,对此我还很陌生,我们将不胜感激。

最佳答案



您不需要为此编写函数,可以在单个表达式中完成:

>>> a[np.all(a != 0, axis=1)]
array([[7, 1, 2, 8],
       [5, 8, 3, 6]])

读取为:从a中选择完全非零的所有行。

关于python - 如何删除包含零的numpy数组中的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18397805/

10-11 15:30