2017-06-06 76 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

相关问题