如何使用条件从 numpy 数组中删除特定行?

How to delete specific rows from a numpy array using a condition?

这是代码

a = np.array([[ 0,  1],
              [ 3, 11],
               [4,2]])

这是我试过的

a= a[a[0]>0,:]

当我只有两个元素时它工作正常,但它会抛出一个 error.What 我想做的是在第一列中如果有一个值小于一个我需要删除它整行。

所以预期的输出是

     ([ 3, 11],
     [4,2]])

我希望有一个解决方案,即使每个项目有 2 个以上的元素,我也可以概括,例如

    ([2,3,4,5],
     [8,2,4,6],
     [2,4,9,1],
     [5,3,2,0],)

那么代码的应用会给出如

这样的结果
    ([2,3,4,5],
     [8,2,4,6],
     [2,4,9,1],)

任何建议。

仅对第一列使用 a[:,0] > 0,它将从第一列中提取所有值并检查哪些值 > 0 或您想要的任何条件:

 In [50]: a = np.array([[ 0,  1],
              [ 3, 11],
               [4,2]])

In [51]: a[a[:,0] > 0]
Out[51]: 
array([[ 3, 11],
       [ 4,  2]])

如果要检查每一行中的所有值,可以使用 all

In [43]: a = np.array([[ 0,  1],
              [ 3, 11],
               [4,2]])

In [44]: a[(a >= 0).all(axis=1)]
Out[44]: 
array([[ 3, 11],
       [ 4,  2]])

In [45]: a = np.array ([[2,3,4,5],
                       [8,2,4,6],
                       [2,4,9,1],
                        [5,3,2,0]])

In [46]: a[(a > 0).all(axis=1)]
Out[46]: 
array([[2, 3, 4, 5],
       [8, 2, 4, 6],
       [2, 4, 9, 1]])