Python - 稀疏向量/距离计算

时间:2012-01-02 21:27:29

标签: python vector scipy distance sparse-matrix

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

提前多多感谢!

2 个答案:

答案 0 :(得分:4)

您可以使用常规python列表(动态)作为向量。琐碎的例子如下。

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

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

import numpy
a = numpy.array([1,2,3])

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

sqeuclidean(scipy.sparse.coo_matrix((1,3)),scipy.sparse.coo_matrix((1,3))) # 0

many kinds个稀疏矩阵,有些基于字典(参见注释)。您可以从列表中定义行稀疏矩阵,如下所示:

scipy.sparse.csr_matrix([1,2,3])

答案 1 :(得分:0)

这是您可以在numpy中执行的操作:

import numpy as np


a = np.array([1, 2, 3])
b = np.array([0, 0, 0])

c = np.sum(((a - b) ** 2)) # 14