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