我有一个Nx1值的向量。我想要做的是创建一个NxN矩阵,其中每个值代表第i个和第j个值之间的差异 - 有点像一个大的相关矩阵。我已经完成了循环,但我正在寻找一种更优雅的方法来使用Python的矢量化功能,因为这个矢量可能会变得非常大。我意识到有一些问题有抽象的答案。
如何在Python中复制MATLAB的bsxfun
函数?
我在SE上发布了一个问题,要发现bsxfun
here,但现在需要在Python中做同样的事情。
答案 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]])
应该有用。