我有一个 Nx1 值向量。我想做的是创建一个 NxN 矩阵,其中每个值代表第 i 个和第 j 个值之间的差异 - 有点像一个大的相关矩阵。我已经用循环完成了这个,但我正在寻找一种更优雅的方法来使用 Python 的矢量化功能,因为这个矢量可能会变得非常大。我意识到有一些问题有抽象的答案。
如何bsxfun
在 Python 中复制 MATLAB 的函数?
我在 SE 上发布了一个问题来发现bsxfun
这里,但现在需要在 Python 中做同样的事情。
我不完全清楚你想要什么,但是numpy
的广播规则(见这里的介绍)意味着大部分时间bsxfun
都不需要,因为它只是 Works(tm)。例如,如果我了解您的意思,例如
>>> a = np.array([1,3,5,7,9])
>>> a - a[:,None]
array([[ 0, 2, 4, 6, 8],
[-2, 0, 2, 4, 6],
[-4, -2, 0, 2, 4],
[-6, -4, -2, 0, 2],
[-8, -6, -4, -2, 0]])
应该管用。