我有值的NX1向量。我想要做的是创建一个NxN矩阵,其中每个值表示第i个值和第j个值之间的差异 - 有点像大型相关矩阵。我已经完成了这个循环,但我正在寻找一种更优雅的方式来使用Python的矢量化功能,因为这个矢量可能会相当大。我意识到有一些问题与抽象的答案。矩阵在Python的差异,导致像MATLAB的bsxfun
我怎样才能复制MATLAB的Python中bsxfun
功能?
我发布了一个关于SE的问题来发现bsxfun
here,但现在需要在Python中做同样的事情。
我有值的NX1向量。我想要做的是创建一个NxN矩阵,其中每个值表示第i个值和第j个值之间的差异 - 有点像大型相关矩阵。我已经完成了这个循环,但我正在寻找一种更优雅的方式来使用Python的矢量化功能,因为这个矢量可能会相当大。我意识到有一些问题与抽象的答案。矩阵在Python的差异,导致像MATLAB的bsxfun
我怎样才能复制MATLAB的Python中bsxfun
功能?
我发布了一个关于SE的问题来发现bsxfun
here,但现在需要在Python中做同样的事情。
我不是你想要的东西完全清楚,但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]])
应该工作。
啊完美。我错误地使用了a-a.T,这当然是返回一个0的数组。谢谢。 – 2013-02-18 17:18:32
你甚至尝试[搜索](http://stackoverflow.com/questions/8946810/is-there-an-equivalent-to-the-matlab-function-bsxfun-in-python)? – danodonovan 2013-02-18 17:09:50
是的,阅读http://stackoverflow.com/questions/8946810/is-there-an-equivalent-to-the-matlab-function-bsxfun-in-python,http://stackoverflow.com/questions/12454685/翻译-A-线的 - MATLAB的bsxfun-rdivide到蟒蛇,这里的广播教程http://www.scipy.org/EricsBroadcastingDoc,你真的需要downvote?你甚至没有发布回复。 – 2013-02-18 17:14:08