首页 > 解决方案 > 在 NumPy 中计算距离矩阵的有效方法

问题描述

我有这个示例数组:

In [38]: arr
Out[38]: array([  0,  44, 121, 154, 191])

以上只是一个示例,而我的实际数组大小非常大。那么,计算距离矩阵的有效方法是什么?

结果应该是:

In [41]: res
Out[41]: 
array([[   0,   44,  121,  154,  191],
       [ -44,    0,   77,  110,  147],
       [-121,  -77,    0,   33,   70],
       [-154, -110,  -33,    0,   37],
       [-191, -147,  -70,  -37,    0]])

我写了一个for太慢的基于循环的实现。出于效率原因,这可以矢量化吗?

标签: pythonarraysnumpymultidimensional-arrayvectorization

解决方案


您可以使用广播

from numpy import array

arr = array([  0,  44, 121, 154, 191])
arrM = arr.reshape(1, len(arr))
res = arrM - arrM.T

推荐阅读