我知道我可以使用索引表达式来过滤此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]]
根据字段/列进行过滤的正确方法是什么?