如何计算数组中每n行的平均值?含np.mean使用问题排查
计算数组每n行的平均值(以n=4为例)
你原代码无法运行的原因是:np.mean没有step参数,且你指定的axis=1是按列计算平均值,和按行分组的需求不匹配。
可以用np.mean实现需求,核心思路是先将数组重塑为「每组4行」的结构,再对每组的行维度取平均,具体分两种场景:
场景1:数组行数是4的整数倍
假设你的数组a形状为(N, M),且N能被4整除,直接重塑数组后计算:
import numpy as np # 示例:创建12行3列的随机数组 a = np.random.rand(12, 3) # 重塑为 (组数, 每组行数, 列数),-1表示自动计算组数 reshaped_a = a.reshape(-1, 4, a.shape[1]) # 对每组的行维度(axis=1)计算平均值 means = np.mean(reshaped_a, axis=1) print(means)
输出结果的形状为(组数, M),对应每组4行的列平均值。
场景2:数组行数不是4的整数倍
如果行数无法被4整除,可选择截断剩余不足4行的部分,或单独处理剩余行:
import numpy as np # 示例:创建10行3列的随机数组 a = np.random.rand(10, 3) # 计算完整4行组的数量 num_full_groups = a.shape[0] // 4 # 截断数组,只保留完整分组的行 truncated_a = a[:num_full_groups * 4, :] # 重塑并计算平均值 reshaped_a = truncated_a.reshape(-1, 4, a.shape[1]) means = np.mean(reshaped_a, axis=1) print(means)
内容的提问来源于stack exchange,提问作者user19744922
相关产品推荐
相关产品推荐

