【发布时间】:2021-06-22 00:03:39
【问题描述】:
假设我有一个巨大的 2D 数据库,形状为 (1.2mil, 6)。
我想在big_DB 中找到一维数组(1, 6) 的索引。实际上,我一次要搜索 64 个这样的向量,形状为 (64, 6)。
这是我的代码:
for data in range(64): # I have 64 1d arrays to find
self.idx = np.where((big_DB == arrays[data]).all(axis=1))
这需要 0.043 秒(对于所有 64 个阵列)。有没有更快的方法来做到这一点?我的项目将调用搜索功能超过 40,000 次。
编辑) big_DB 是 itertools.product 的结果,行中唯一,浮点数。
【问题讨论】:
-
你有什么数据类型?
-
这是我发的相关帖子:stackoverflow.com/q/64215263/2988730。搜索比排序更容易。一旦你澄清了一些事情就会发布。
-
big_DB排序了吗?是真的吗?它会经常更新吗?您是否愿意改用映射类型?散列将比线性甚至二进制搜索快得多(400k 次迭代很重要) -
big_DB 已排序,项目期间不会更新。
-
它是什么数据类型?
标签: python arrays dataframe numpy indexing