我正在寻找Python中动态增长的向量,因为我不知道它们的长度。此外,我想计算这些稀疏向量之间的距离,最好使用scipy.spatial.distance中的距离函数(尽管欢迎任何其他建议)。任何想法如何做到这一点? (最初,它不需要高效。)Python - 稀疏向量/距离计算
非常感谢!
我正在寻找Python中动态增长的向量,因为我不知道它们的长度。此外,我想计算这些稀疏向量之间的距离,最好使用scipy.spatial.distance中的距离函数(尽管欢迎任何其他建议)。任何想法如何做到这一点? (最初,它不需要高效。)Python - 稀疏向量/距离计算
非常感谢!
您可以使用常规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])
对于稀疏的距离,见[pairwise_distances(http://scikit-learn.sourceforge.net/dev/modules/generated/sklearn.metrics。 pairwise.pairwise_distances.html)在scikit学习。随着scipy.spatial.distance,你必须例如cdist(X.todense(),Y.todense(),metric = ...) – denis 2012-01-03 16:37:08