2014-11-03 84 views
2

假設img是2維numpy數組。假設x和y是與img相同形狀的整數值2維numpy數組。考慮:以任意維度對具有numpy數組的數組進行索引numpy數組

newImg = img[x, y] 

newImg現在是相同的形狀的IMG 2維陣列,其中newImg [I,J] == IMG [X [I,J],Y [I,J]]對於所有的i和j。

我想將此過程概括爲任意數量的維度。也就是說,讓img是一個d維numpy數組,並把x [i]作爲一個整數值的d維numpy數組,它的形狀與img相同。我基本想要的是:

newImg = img[x[0], x[1], ..., x[d-1]] 

這顯然是僞代碼,並沒有預期的工作。

我該怎麼用NumPy做到這一點?

回答

1

你試過只是

newImg = img[x] 

看起來這應該工作!

我假設x是滿足下列條件

len(x) == img.ndim 
all(a.shape == img.shape for a in x) 

這似乎符合你所描述的整數數組列表或元組。

+0

我不認爲這很簡單。下面有一個例子(這太大了,不適合這個評論。) – NLi10Me 2014-11-04 00:26:01

+0

哦,等等,我沒有嘗試x作爲數組的元組。我會試試看。 – NLi10Me 2014-11-04 00:26:52

+0

對不起,數組的元組工作。請注意,這是解決方案。在我的問題中,我假設x是一個數組數組。元組工作。 – NLi10Me 2014-11-04 00:28:40