2013-02-18 57 views
-1

我有值的NX1向量。我想要做的是創建一個NxN矩陣,其中每個值表示第i個值和第j個值之間的差異 - 有點像大型相關矩陣。我已經完成了這個循環,但我正在尋找一種更優雅的方式來使用Python的矢量化功能,因爲這個矢量可能會相當大。我意識到有一些問題與抽象的答案。矩陣在Python的差異,導致像MATLAB的bsxfun

我怎樣才能複製MATLAB的Python中bsxfun功能?

我發佈了一個關於SE的問題來發現bsxfunhere,但現在需要在Python中做同樣的事情。

+0

你甚至嘗試[搜索](http://stackoverflow.com/questions/8946810/is-there-an-equivalent-to-the-matlab-function-bsxfun-in-python)? – danodonovan 2013-02-18 17:09:50

+0

是的,閱讀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

回答

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]]) 

應該工作。

+0

啊完美。我錯誤地使用了a-a.T,這當然是返回一個0的數組。謝謝。 – 2013-02-18 17:18:32