2017-09-01 170 views
0

我有兩個numpy陣列,一個大於另一個,但都具有相同數量的維度。獲取範圍/切片從numpy陣列的大小另一個陣列

我想從較大的數組中獲得與較小數組大小相匹配的切片。 (從0,0,0....

因此,想象大陣已經形成(10,5,7)。
而小陣已成形(10,4,6)。

我想從更大的陣列來獲得這片:

biggerArray[:10,:4,:6] 

形狀元組的長度可能會有所不同,我想這樣做的任何數量的維度(都總是有相同數量的的尺寸)。

如何做到這一點?有沒有辦法使用元組作爲片段的範圍?

回答

3

手動構建slice對象的元組。 biggerArray[:10, :4, :6]biggerArray[(slice(10), slice(4), slice(6))]語法糖,所以:

biggerArray[tuple(map(slice, smallerArray.shape))] 

biggerArray[tuple(slice(0, n) for n in smallerArray.shape)] 

您可能要assert result.shape == smallerArray.shape事後,公正的情況下輸入的形狀被你想過沒有所以然來。

+0

太好了,'slice'對象正是我所需要的。 –