python - 如何根据元素的字段过滤numpy数组
问题描述
我知道我可以使用索引表达式来过滤一个 numpy 数组,如此SO answer所示。
>>> 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]]
基于字段/列进行过滤的正确方法是什么?
解决方案
推荐阅读
- r - 如何从 Newsmap (Quanteda) 导出构建的字典
- python - 如何在 google colab 上运行 notebook(抛出错误)
- android - 如何将 ViewBinding 与 RecyclerView Adapter 与 Kotlin 中现有的内部类一起使用?
- php - PHP 不显示错误并且 POST 不工作
- rest - 当差异在路由中时如何使用 ResponseCache 在 ASPNET Core 中缓存
- r - 在数据框中添加一个新列,其中包含开始和结束时间戳之间的天数
- elasticsearch - 使用匹配词进行弹性搜索排序(如果存在)
- php - 我可以使用 artisan serve laravel 运行多个命令吗?
- powershell - 更改 PowerShell 对象属性名称,保留值
- swift - 在 NSPopupButton 菜单中使用与主菜单相同的 keyEquivalent