python - 根据字典中是否存在过滤 numpy 数组

标签 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 数组。因此,过滤该输入数组将给出第一行和第三行,因为 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]]

关于python - 根据字典中是否存在过滤 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50697293/

相关文章:

python - 如何将一行拆分为多行并在数据框列上应用日期时间?

python - 是否可以映射数据并制作向量矩阵?

python - PySpark - 添加一个按用户排名的新列

python - conda 锻造 : Why does Conda inconsistently want to downgrade NumPy?

python - 更多 Pythonic/Pandaic 方法循环遍历 pandas 系列

python - 仅绘制正加权边 NetworkX

python - 通过 Scrapy 中的元从连续的并行解析函数中产生值

python - Scipy 操作是逐行完成的,而不是像 Matlab 中那样逐列完成的?

python ctypes - 传递 numpy 数组 - 奇数输出

python - Numpy 三列之间的最大参数项数,输出为数组