gpt4 book ai didi

python - 如何使用 python 查找数组中的元素列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:38 25 4
gpt4 key购买 nike

我有两组数据,它们的值都引用较大数据集的一部分(非结构化网格中的点)。

两个较小的数据集包含具有全局 id 的向量,该全局 id 引用较大数据集中的点。像这样的东西:

大量数据:

0 0 0
0 0 1
0 1 0
1 0 0
1 1 0
1 0 1
0 1 1
1 1 1

较小的数据集:

一个

0 1
3 5
4 5
6 7
7 2

B

0 10
4 12
7 60

较小数据集中的第一列是对较大数据集中行号的引用。较小数据集中的第二列只是示例数据。

还值得一提的是,B 的第一列始终是 A 第一列的子集。

我需要的是 A 的行索引,其中点 id 与 B 中的点 id 匹配。

在这种情况下,这将是:

ind = [0,2,4]

即 A[ind,0] = B[:,0]

我之前已经成功地使用循环来完成此操作,但现在数据集的大小增加到超过 1000 万个,并且循环太慢了。谁能建议任何更快的方法?

最佳答案

将 B 的第一列数据放入一个集合中应该会加快速度。假设 A 和 B 是元组(或列表)的列表,请尝试以下操作:

>>> A
[('0', '1'), ('3', '5'), ('4', '5'), ('6', '7'), ('7', '2')]
>>> B
[('0', '10'), ('4', '12'), ('7', '60')]
>>> bkeys=set([i[0] for i in B])
>>> [i for i,v in enumerate(A) if v[0] in bkeys]
[0, 2, 4]

关于python - 如何使用 python 查找数组中的元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26381210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com