Python - 稀疏向量/距离计算

0 投票
2 回答
3974 浏览
提问于 2025-04-17 09:24

我想在Python中使用动态增长的向量,因为我事先不知道它们的长度。此外,我还想计算这些稀疏向量之间的距离,最好是用scipy.spatial.distance里的距离函数(不过其他建议也可以)。有没有什么好主意?(一开始不需要太高效。)

非常感谢!

2 个回答

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
5

你可以使用普通的 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])

撰写回答