Python 沿n维numpy数组的每个维度索引每个第n个元素

Python 沿n维numpy数组的每个维度索引每个第n个元素,python,arrays,numpy,Python,Arrays,Numpy,在一维中,可以执行以下操作: np.arange(12)[::3] 获得: array([0, 3, 6, 9]) 对N维进行同样操作的有效方法是什么? 例如,假设: np.random.random((10, 15, 20)) 如何获得每个维度上的每三个元素?对于3d,您可以执行以下操作: a = np.random.random((10, 15, 20)) a[::3,::3,::3].shape # (4, 5, 7) a.shape # (10, 15, 20) 对于任意维度

在一维中,可以执行以下操作:

np.arange(12)[::3]
获得:

array([0, 3, 6, 9])
对N维进行同样操作的有效方法是什么?

例如,假设:

np.random.random((10, 15, 20))
如何获得每个维度上的每三个元素?

对于3d,您可以执行以下操作:

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

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

a.shape
# (10, 15, 20)
对于任意维度,可以使用
切片

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

np.arange(10*15*20).重塑(4,15,20)
这样的东西的预期结果是什么?例如,当数组包含一些图像数据时,它相当于对图像进行下采样。尺寸可以是:高度、宽度、深度、时间、通道等。太棒了!我不知道用
slice
玩这个把戏。正是我需要的。很高兴它能帮上忙!