Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-稀疏向量/距离计算_Python_Vector_Scipy_Distance_Sparse Matrix - Fatal编程技术网

Python-稀疏向量/距离计算

Python-稀疏向量/距离计算,python,vector,scipy,distance,sparse-matrix,Python,Vector,Scipy,Distance,Sparse Matrix,我在Python中寻找动态增长的向量,因为我事先不知道它们的长度。此外,我想计算这些稀疏向量之间的距离,最好使用scipy.spatial.distance中的距离函数(尽管欢迎任何其他建议)。有什么办法吗?(最初,它不需要高效。) 提前多谢 您可以使用常规python列表(动态)作为向量。下面是一个简单的例子 from scipy.spatial.distance import sqeuclidean a = [1,2,3] b = [0,0,0] print sqeuclidean(a,b)

我在Python中寻找动态增长的向量,因为我事先不知道它们的长度。此外,我想计算这些稀疏向量之间的距离,最好使用scipy.spatial.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矩阵并将其用作向量。这是有效的(参数是矩阵的大小,默认情况下用零填充):

有许多稀疏矩阵,有些是基于字典的(见注释)。可以从如下列表中定义行稀疏矩阵:

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

您可以使用常规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矩阵并将其用作向量。这是有效的(参数是矩阵的大小,默认情况下用零填充):

有许多稀疏矩阵,有些是基于字典的(见注释)。可以从如下列表中定义行稀疏矩阵:

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

以下是如何在numpy中实现这一点:

import numpy as np


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

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

回答得好。我还注意到你可以使用numpy数组,这在其他情况下可能是有益的。我想他指的是缺少大多数元素的向量。它们可以表示为字典:{1:5,2:4,101:15}。现在你如何计算距离?谢谢你的回答!这些SciPy稀疏矩阵是动态增长的,还是在初始化过程中需要预先给定一个固定的大小(因为我事先不知道这些长度)?可以动态调整其中一些矩阵的大小<例如,code>lil_矩阵实现了
重塑
方法。回答得好。我还注意到你可以使用numpy数组,这在其他情况下可能是有益的。我想他指的是缺少大多数元素的向量。它们可以表示为字典:{1:5,2:4,101:15}。现在你如何计算距离?谢谢你的回答!这些SciPy稀疏矩阵是动态增长的,还是在初始化过程中需要预先给定一个固定的大小(因为我事先不知道这些长度)?可以动态调整其中一些矩阵的大小<例如,code>lil_矩阵实现了
重塑
方法。有关稀疏距离,请参阅scikit学习中的。使用scipy.spatial.distance,对于稀疏距离,必须使用例如cdist(X.todense(),Y.todense(),metric=…),请参见scikit学习中的。使用scipy.spatial.distance时,必须使用例如cdist(X.todense(),Y.todense(),metric=…)