尝试每 12 个元素获取最大值

Trying to get the maximum value every 12th element

我正在尝试获取(3d 数组的)第一个轴的最大值,但仅获取每第 12 个元素的最大值。

使用随机 3D numpy 数组(第一个轴可被 12 整除),第一个轴的大小为 36。我想获得前 12 个元素的最大值,然后是 12 - 24,然后然后是 24 - 36.

我试过了:

## 3d array

array = np.random.rand(36,20,30)

# get the maximum for every 12 units:

maximum_every_12 = np.zeros((int(array.shape[0]/12),array.shape[1],array.shape[2]))

for i in range(12):
    maximum_every_12[i,:,:] = np.max(array[i::12,:,:],axis=0)

但是我得到一个索引错误:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
/tmp/ipykernel_1643197/1714711606.py in <module>
      8 
      9 for i in range(12):
---> 10     maximum_every_12[i,:,:] = np.max(array[i::12,:,:],axis=0)

IndexError: index 3 is out of bounds for axis 0 with size 3

如何根据 3d 数组的第一个轴(大小 36、20、30)获取每第 12 个元素的最大值。

你的数组大小有误。 maximum_every_12 的第一个轴的长度为 36 / 12,即 3。因此您不能迭代 range(12),它在 i = 4 处失败。您必须遍历 range(36/12).