2017-06-06 65 views
2

在一個維度也能夠做到:指數沿着N維numpy的陣列的每一維的每個第n個元素

np.arange(12)[::3] 

取得:

array([0, 3, 6, 9]) 

什麼是一種有效的如何做N維相同?

例如,給定:

np.random.random((10, 15, 20)) 

如何獲得每個第三元件沿每個維度?

+0

什麼會是像'np.arange(10 * 15的預期結果* 20).reshape(4,15,20)'? – MSeifert

+0

例如,當數組包含一些圖像數據時,它相當於下采樣圖像。尺寸可以是:高度,寬度,深度,時間,通道等。 – desa

回答

3

對於3D,你可以這樣做:

a = np.random.random((10, 15, 20)) 

a[::3,::3,::3].shape 
# (4, 5, 7) 

a.shape 
# (10, 15, 20) 

任意尺寸,您可以使用slice

a[[slice(None,None,3)] * a.ndim].shape 
# (4, 5, 7) 
+0

太棒了!我不知道'slice'這個技巧。正是我需要的。 – desa

+0

很高興它可以幫助! – Psidom

相關問題