python - 快速查找集合中的 numpy 向量

标签 python numpy set vectorization lookup

我有一个 numpy 数组,例如:

a = np.array([[1,2],
              [3,4],
              [6,4],
              [5,3],
              [3,5]])

我也有一套

b = set((1,2),(6,4),(9,9))

我想找到集合b中存在的向量的索引,这里是

[0, 2]

但是我使用 for 循环来实现这一点,有没有一种方便的方法来完成这项工作,避免 for 循环? 我使用的for循环方法:

record = []
for i in range(a.shape[0]):
    if (a[i, 0], a[i, 1]) in b:
        record.append(i)

最佳答案

您可以使用过滤器:

In [8]: a = np.array([[1,2],
              [3,4],
              [6,4],
              [5,3],
              [3,5]])

In [9]: b = {(1,2),(6,4)}

In [10]: filter(lambda x: tuple(a[x]) in b, range(len(a)))
Out[10]: [0, 2]

关于python - 快速查找集合中的 numpy 向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218768/

相关文章:

java - 在 HashSet 中使用并集和交集方法

python - "Lambda can' t 找到文件 lambda_function.py": Error while invoking lambda function from ZIP file

python - 在模板 Django 中获取 Site_ID

Python Pandas 只比较相同标签的 DataFrame 对象

python - 根据另一个数组的值将 bool 矩阵的元素更改为 True

C++ 11 设置奇怪的行为

python - 一旦行数大于 N,就删除 MySQL 表的前 X 行

python - 对非地址进行地理编码 : Geopy

python - 类似于numpy的diff的功能

windows - 批量写入文件