Python -稀疏向量/距离计算



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

提前感谢!

您可以使用常规的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

有很多种稀疏矩阵,有些基于字典(见注释)。您可以像这样从列表中定义行稀疏矩阵:

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

在numpy中可以这样做:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([0, 0, 0])
c = np.sum(((a - b) ** 2)) # 14

最新更新