【发布时间】:2014-11-10 08:15:29
【问题描述】:
我有一个结构化的 numpy 格式数组
dataZero = [(1000, 1045), # ('gid','lpid')
(2345, 2500),
... ]
其中有大约 130,000 个条目。我还有另一个结构化的格式数组
dataSnap = [(1002,...,...,...), # ('gid',...)
(2400,...,...,...),
(2490,...,...,...),
... ]
但这包含 200 万个条目。
对于dataZero、i 中的每个条目,我想在dataSnap 中找到满足条件dataZero['gid'][i] <= dataSnap['gid'] <= dataZero['lpid'][i] 的条目。这应该允许返回多个条目。它可以返回满足此条件的条目的索引,也可以返回条目本身 - 只要我在合理的时间内执行此操作 ~ 分钟。
在上面的例子中,这将返回,例如:
[some code] -> [[0],[1,2],...] # if returning indices of dataSnap
[some code] -> [[(1002,...,...,...)], # if returning the entries themselves
[(2400,...,...,...),(2490,...,...,...)],
...]
我不知道如何快速做到这一点 - for 循环需要很长时间。转换为一组{} 会更好吗?感谢任何建议/解决方案。
【问题讨论】:
-
两个数组都排序了吗?
dataZero中的范围是否不重叠? -
数组未排序。 dataZero 中的范围不重叠。
-
它们可以排序吗?一旦它们被排序,任务就变得微不足道了。
-
@StevenRumbalski - 他们可以。当前顺序并不重要。
标签: python arrays search numpy set