Python的差异矩阵,结果如MATLAB的bsxfun

时间:2013-02-18 17:05:18

标签: python matrix

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

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

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

1 个答案:

答案 0 :(得分:3)

我并不完全清楚你想要什么,但numpy的广播规则(参见here的介绍)意味着大部分时间bsxfun都不需要因为它正常工作(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]])

应该有用。