【发布时间】:2017-02-12 02:29:09
【问题描述】:
我需要计算两组向量之间的距离,source_matrix 和 target_matrix。
当source_matrix 和target_matrix 都是scipy.sparse.csr.csr_matrix 类型时,我有以下行:
distances = sp.spatial.distance.cdist(source_matrix, target_matrix)
我最终得到以下部分异常回溯:
File "/usr/local/lib/python2.7/site-packages/scipy/spatial/distance.py", line 2060, in cdist
[XA] = _copy_arrays_if_base_present([_convert_to_double(XA)])
File "/usr/local/lib/python2.7/site-packages/scipy/spatial/distance.py", line 146, in _convert_to_double
X = X.astype(np.double)
ValueError: setting an array element with a sequence.
这似乎表明稀疏矩阵被视为密集 numpy 矩阵,这既失败了,也错过了使用稀疏矩阵的要点。
有什么建议吗?
【问题讨论】:
-
cdist期望它的参数是 numpy 数组。它不处理 scipy 的稀疏矩阵。 -
@WarrenWeckesser 那么
cdist有稀疏友好的替代方案吗? -
@NirIzr 能否请您包含您的
source和target矩阵的一部分? -
查看stackoverflow.com/questions/36557472/… - 它谈到了稀疏和距离.cdist。