Python-稀疏向量/距离计算

MaV*_*aVe 0 python vector distance scipy sparse-matrix

我正在Python中寻找动态增长的向量,因为我事先不知道它们的长度。此外,我想计算这些稀疏向量之间的距离,最好使用 scipy.spatial.distance 中的距离函数(尽管欢迎任何其他建议)。有什么想法如何做到这一点?(最初,它不需要高效。)

预先非常感谢!

Edu*_*nec 5

您可以使用常规 Python 列表(动态)作为向量。下面是一个简单的例子。

from scipy.spatial.distance import sqeuclidean
a = [1,2,3]
b = [0,0,0]
print sqeuclidean(a,b) # 14
Run Code Online (Sandbox Code Playgroud)

根据 aganders3 的建议,请注意,如果需要,您还可以使用 numpy 数组:

import numpy
a = numpy.array([1,2,3])
Run Code Online (Sandbox Code Playgroud)

如果你的问题的稀疏部分至关重要,我会使用 scipy - 它支持稀疏矩阵。您可以定义一个 1xn 矩阵并将其用作向量。这是可行的(参数是矩阵的大小,默认用零填充):

sqeuclidean(scipy.sparse.coo_matrix((1,3)),scipy.sparse.coo_matrix((1,3))) # 0
Run Code Online (Sandbox Code Playgroud)

稀疏矩阵有很多种,有些是基于字典的(参见评论)。您可以从列表中定义行稀疏矩阵,如下所示:

scipy.sparse.csr_matrix([1,2,3])
Run Code Online (Sandbox Code Playgroud)