Python 单独保存时,比较矢量(查找最近的矢量)的有效方法是什么?
假设我有一个11523维的浮动向量Python 单独保存时,比较矢量(查找最近的矢量)的有效方法是什么?,python,processing-efficiency,Python,Processing Efficiency,假设我有一个11523维的浮动向量s,也就是说,它的形状是1x11523。(是的,没有那么紧凑。) 我还有108000个向量要比较。其中,我想得到最接近s的向量。(换句话说,我在11523D中有108000个质心,我希望有距离s最近的质心) 当然,108000x11523浮动矩阵太大,无法保存在一个文件中。因此,将保存每个36个中心线。(例如,c0000.pickle,c0001.pickle,c0002.pickle,…,c2999,pickle,每一个都是一个36x11523矩阵) 我正在浏
s
,也就是说,它的形状是1x11523。(是的,没有那么紧凑。)
我还有108000个向量要比较。其中,我想得到最接近s
的向量。(换句话说,我在11523D中有108000个质心,我希望有距离s
最近的质心)
当然,108000x11523浮动矩阵太大,无法保存在一个文件中。因此,将保存每个36个中心线。(例如,c0000.pickle
,c0001.pickle
,c0002.pickle
,…,c2999,pickle
,每一个都是一个36x11523矩阵)
我正在浏览每个文件:
best_so_far = 1e10 # or, infinity
for file in files:
centeroids = load(file) # eg, `c0001.pickle`
dist = distance_measure(s, centeroids)
if dist < best_so_far:
# update best
best_迄今为止=1e10#或无穷大
对于文件中的文件:
中心线=加载(文件)#例如,`c0001.pickle`
距离=距离(s,中心线)
如果距离<迄今为止的最佳距离:
#最佳更新
现在这个过程相当缓慢。有更好的方法吗?我是否应该加载几个文件,直到达到某个内存使用量并计算度量值?除了复杂的计算之外,您还需要添加文件I/O。我想这不会有什么帮助。@YW如果你需要性能,Python是错误的工具。可能是Matlab、Mathematica或任何其他不基于脚本语言的工具。如果您使用常用的距离度量,如余弦,则可以对操作进行矢量化。是否为此使用
numpy
?你能用一个scipy.sparse
矩阵吗?你的距离是多少?@Chuck