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

时间:2016-02-01 20:12:19

标签: arrays numpy subset

这是代码

outFile.open("C:\\Users\\pookie\\Documents\\WHERETHEFISMYFILE.txt", ios_base::out);

这就是我试过的

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

当我只有两个元素时,它工作得很好,但更多它会抛出一个错误。我想要做的是在第一列中,如果有一个小于1的值,我需要删除整行。

所以预期的输出是

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

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

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

然后代码的应用将给出诸如

之类的结果
    ([2,3,4,5],
     [8,2,4,6],
     [2,4,9,1],
     [5,3,2,0],)

任何建议。

1 个答案:

答案 0 :(得分:4)

仅针对第一列使用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]])