我有这个示例数组:
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
循环的实现,它太慢了。出于效率的原因,可以将它向量化吗?
3条答案
按热度按时间kxkpmulp1#
可以使用broadcasting:
字符串
zzlelutf2#
有
subtract
.outer
,它有效地执行两个数组之间的广播减法。将ufunc
op
应用于所有对(a,B),其中a在A中,B在B中。设M = A.ndim,N = B. ndim,则
op.outer(A, B)
的结果C是一个维数为M + N的数组,使得:个字符
或者说,
型
型
4ngedf3f3#
字符串
这将是一个更一般的答案,其中数组不必是一维的。