-1

我有一个 Nx1 值向量。我想做的是创建一个 NxN 矩阵,其中每个值代表第 i 个和第 j 个值之间的差异 - 有点像一个大的相关矩阵。我已经用循环完成了这个,但我正在寻找一种更优雅的方法来使用 Python 的矢量化功能,因为这个矢量可能会变得非常大。我意识到有一些问题有抽象的答案。

如何bsxfun在 Python 中复制 MATLAB 的函数?

我在 SE 上发布了一个问题来发现bsxfun 这里,但现在需要在 Python 中做同样的事情。

4

1 回答 1

3

我不完全清楚你想要什么,但是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]])

应该管用。

于 2013-02-18T17:13:05.227 回答