2012-11-08 63 views
1

我有2D numpy的數組,例如形狀:2D ndarray:行操作

>>> a.shape 
(48, 160) 

和我想要做的元件或每行之間簡單的操作,象a[0] - a[1]但針對所有其它行中的每一行。

我知道如何簡單地通過使用for循環和迭代行做到這一點,但我想知道如果有一些numpy的切片特定指令,可以做到這一點,而無需使用for循環

+0

有一個偉大的模塊叫itertools,它會給你一個對象列表的所有組合。 – kreativitea

回答

2

您可以使用廣播魔法做這個。

import numpy as np 
a = np.arange(12).reshape((4, 3)) 
b = np.arange(15).reshape((5, 3)) 
diff = a[np.newaxis, :, :] - b[:, np.newaxis, :] 
diff.shape 
# (5, 4, 3) 

This是一個很好的廣播教程。在這種情況下,我做了(1,4,3)和b(5,1,3),我得到的結果是(5,4,3),a和b中每一行的差異。

+0

謝謝,它效果很好。我需要學習廣播來獲得意義,但有解決方案和文檔時更容易。乾杯 – theta