gpt4 book ai didi

python - 使用 numpy 搜索大数组

转载 作者:行者123 更新时间:2023-11-28 17:40:50 25 4
gpt4 key购买 nike

我有两个整数数组

a = numpy.array([1109830922873, 2838383, 839839393, ..., 29839933982])
b = numpy.array([2838383, 555555555, 2839474582, ..., 29839933982])

其中 len(a) ~ 15,000 和 len(b) ~ 200 万。

我想要的是找到与数组 a 中的元素匹配的数组 b 元素的索引。现在,我使用列表理解和 numpy.argwhere() 来实现这一点:

bInds = [ numpy.argwhere(b == c)[0] for c in a ]

但是,显然,要完成这个需要很长时间。而且数组 a 也会变大,所以这不是一个明智的选择。

考虑到我在这里处理的大型数组,有没有更好的方法来实现这个结果?目前执行此操作大约需要 5 分钟。需要任何加速!

更多信息:我希望索引也与数组 a 的顺序相匹配。 (感谢查尔斯)

最佳答案

除非我弄错了,否则您的方法会一次又一次地在整个数组 b 中搜索 a 的每个元素。

或者,您可以创建一个字典,将 b 中的各个元素映射到它们的索引。

indices = {}
for i, e in enumerate(b):
indices[e] = i # if elements in b are unique
indices.setdefault(e, []).append(i) # otherwise, use lists

然后您可以使用此映射快速找到 a 中的元素可以在 b 中找到的索引。

bInds = [ indices[c] for c in a ]

关于python - 使用 numpy 搜索大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24556361/

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