You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在3D numpy数组第一轴按每12个元素分组取最大值

错误原因

  • 循环范围配置错误:range(12)会生成0~11共12个索引,但你初始化的maximum_every_12第一轴长度为36/12=3,当循环变量i达到3时就会触发轴0的索引越界
  • 切片逻辑错误:array[i::12,:,:]是从第i位开始每隔12个元素取一个,最终得到的是长度为3的序列,不是你需要的连续12个元素的分组

正确实现

实现1:循环版本(逻辑清晰易理解)

import numpy as np
# 生成测试数组
array = np.random.rand(36,20,30)
group_size = 12
group_count = int(array.shape[0]/group_size)
# 初始化结果数组
maximum_every_12 = np.zeros((group_count, array.shape[1], array.shape[2]))
# 按连续区间分组取最大值
for i in range(group_count):
    maximum_every_12[i,:,:] = np.max(array[i*group_size : (i+1)*group_size, :, :], axis=0)

实现2:向量化高效版本(无循环,性能更优)

利用numpy的reshape操作将第一轴拆分为分组数*每组大小的二维结构,直接对分组维度取最大值即可:

import numpy as np
array = np.random.rand(36,20,30)
group_size = 12
# reshape后shape为(3,12,20,30),对轴1取max得到每组的最大值
maximum_every_12 = array.reshape(-1, group_size, array.shape[1], array.shape[2]).max(axis=1)

内容的提问来源于stack exchange,提问作者wabash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:57:01