Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 快速查找字典向量到给定向量。高维_Python_Algorithm_Math_Vector - Fatal编程技术网

Python 快速查找字典向量到给定向量。高维

Python 快速查找字典向量到给定向量。高维,python,algorithm,math,vector,Python,Algorithm,Math,Vector,我在寻找一个可缩放的答案,但出于我的特殊目的,我有一个48维向量。这可以表示为48个整数的数组,所有整数都在0到255之间 我有一本关于这些向量的大字典,大约有25000个 我需要能够获取数据库中可能存在或不存在的向量,并快速找到数据库中最接近的向量。我所说的最近距离,是指传统的距离公式 我的代码将以python结束,但这是一个更一般的问题 蛮力太慢了。我需要一个接近字典速度的查找。有人有想法吗?我建议实现一个可以执行的。k维中N个点的最坏情况搜索时间是O(k.N^(1-1/k)),因此它应该以

我在寻找一个可缩放的答案,但出于我的特殊目的,我有一个48维向量。这可以表示为48个整数的数组,所有整数都在0到255之间

我有一本关于这些向量的大字典,大约有25000个

我需要能够获取数据库中可能存在或不存在的向量,并快速找到数据库中最接近的向量。我所说的最近距离,是指传统的距离公式

我的代码将以python结束,但这是一个更一般的问题


蛮力太慢了。我需要一个接近字典速度的查找。有人有想法吗?

我建议实现一个可以执行的。k维中N个点的最坏情况搜索时间是
O(k.N^(1-1/k))
,因此它应该以N次线性扩展

如果我有时间,我会回到这个答案,并提供一个不那么简洁的解释,维基百科的


由于您使用的是python,因此此Scipy cookbook条目应该会有所帮助。

另一种证明有用的技术是位置敏感哈希:


你的问题不清楚你是否需要精确的近邻。如果您对返回近似最近邻的向量感到满意,则有更快的解决方案。请参见此处()

非常简洁,但至少指针似乎准确无误!谢谢你这么说。我做了很多研究,虽然kdtrees很酷,我学到了很多,但下面提到的LSH方法似乎是最适用的解决方案,因为我的问题的高维性。到目前为止,LSH似乎最适合我。这是一个巨大的资源。2006年关于该算法的论文是最有帮助的。