python - 根据字典中的存在过滤numpy数组
问题描述
我有一个 numpy ndarray 如下:
import numpy as np
x = np.array([[1, 2, 1], [4, 5, 7], [3, 2, 3]])
我有一本字典,其中保留了一些类 ID,如下所示:
k = {1: None, 2: None, 3: None}
现在,该 numpy 数组的最后一列包含类 ID。所以我想做的是根据字典中是否存在类ID来过滤numpy数组。因此,过滤该输入数组将给出第 1 行和第 3 行,因为7
它不在字典中。
所以我得到类列:
cls = x[:, -1]
现在,我不知道如何使用它来过滤x
数组而不循环遍历它并创建另一个数组。
解决方案
这是一种方法numpy.in1d
:
keys = list(k.keys())
res = x[np.in1d(x[:, -1], keys)]
print(res)
[[1 2 1]
[3 2 3]]
推荐阅读
- r - R中的分层k-fold交叉验证
- oauth - Oauth2.0 授权码授予 ClientId & Secret 混淆
- python - Numpy:使用花式索引在 2d 中插入 2 x 1d 的值
- c - 如何防止在控制台输入缓冲区中报告 WINDOW_BUFFER_SIZE_EVENT?
- regex - Powershell正则表达式在换行后捕获字符串
- eclipse - Eclipse正则表达式只修改一行文件
- python - 将 for 循环传递给 python 中的 any 函数是什么意思?
- kotlin - 如何并行运行多个 Kotlin 协程并等待它们完成后再继续
- sql - 将不同表中的多个查询结果合并为一张查询结果表
- c++ - 如何在 WebView2 上启用扩展