在Python和numpy中,如何删除具有特定条件的数组行

在Python和numpy中,如何删除具有特定条件的数组行,python,arrays,numpy,Python,Arrays,Numpy,假设我有一个数组: b=np.arange(10,40).reshape(10,3) b[3,0]=b[6,1]=b[7,2]=0 array([[10, 11, 12], [13, 14, 15], [16, 17, 18], [ 0, 20, 21], [22, 23, 24], [25, 26, 27], [28, 0, 30], [31, 32, 0], [34, 35,

假设我有一个数组:

b=np.arange(10,40).reshape(10,3)
b[3,0]=b[6,1]=b[7,2]=0

array([[10, 11, 12],
       [13, 14, 15],
       [16, 17, 18],
       [ 0, 20, 21],
       [22, 23, 24],
       [25, 26, 27],
       [28,  0, 30],
       [31, 32,  0],
       [34, 35, 36],
       [37, 38, 39]])
从数组中删除元素为0的行的最简单方法是什么

我找到的最接近的答案似乎是:

最简单?也许吧

>>> b = b[~(b == 0).any(axis=1)]
>>> b
array([[10, 11, 12],
       [13, 14, 15],
       [16, 17, 18],
       [22, 23, 24],
       [25, 26, 27],
       [34, 35, 36],
       [37, 38, 39]])
它使所有行(元素为零的行除外)保持为零。这不一定是最快的,但如果这是代码中的瓶颈,我会非常惊讶,而且花在优化上的时间比节省下来的时间要多

最简单?也许吧

>>> b = b[~(b == 0).any(axis=1)]
>>> b
array([[10, 11, 12],
       [13, 14, 15],
       [16, 17, 18],
       [22, 23, 24],
       [25, 26, 27],
       [34, 35, 36],
       [37, 38, 39]])
它使所有行(元素为零的行除外)保持为零。这不一定是最快的,但如果这是代码中的瓶颈,我会非常惊讶,而且花在优化上的时间比节省下来的时间要多