如何根据其元素字段过滤numpy数组

时间:2018-07-24 01:30:14

标签: python arrays numpy

我知道我可以使用索引表达式来过滤此SO answer中所示的numpy数组。

>>> b = a[a>threshold]

但是,如果我需要逻辑条件基于要过滤的数组的字段怎么办?例如与:

>>> arr = np.arange(12).reshape((3, 4))
>>> arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

当我尝试根据第三个字段/列进行类似的过滤时:

>>> b = arr[arr[2]>0]

我遇到错误

  

回溯(最近通话最近一次):

     

文件“”,位于

的第1行      

IndexError:布尔索引与沿维度的索引数组不匹配   0;维度为3,但相应的布尔维度为4

我无法获得过滤后的数组。我需要的是以下列表理解的相同结果:

[r for r in aa if r[2] > 0]

aa =  [[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]]

根据字段/列进行过滤的正确方法是什么?

0 个答案:

没有答案