Python实现多数组按元素(列方向)计算均值与方差
解决方案:按列计算数组的均值与方差
1. 先收集所有目标数组
你原来的代码仅单次赋值变量x,没有保存10个数组的集合,需要先把它们存入一个容器再处理:
import numpy as np # 假设pic是numpy数组,收集10个目标数组 data = np.array([pic[10, 15+i] for i in range(10)]) # 此时data的形状为(10, 1220),对应10行(每个输入数组)、1220列(元素位置)
2. 按列计算均值
使用numpy.mean并指定axis=0,即可对每一列(对应所有数组的相同位置元素)求均值:
column_means = np.mean(data, axis=0) print(column_means)
输出格式会符合你的需求:[860.9 827.4 795.3 ... 9.4 13.8 19.1](若需要转为Python列表,可加.tolist())
3. 按列计算方差
使用numpy.var实现,默认计算总体方差(除以样本数10),若需样本方差(除以n-1=9),添加ddof=1参数:
# 总体方差(默认) column_vars = np.var(data, axis=0) # 样本方差(自由度为n-1) column_sample_vars = np.var(data, axis=0, ddof=1) print(column_vars) print(column_sample_vars)
补充说明
如果你的pic不是numpy数组,先将单个列表转为numpy数组再组合,能大幅提升计算效率:
# 若原数组是普通Python列表 arrays_list = [list(pic[10, 15+i]) for i in range(10)] data = np.array(arrays_list)
内容的提问来源于stack exchange,提问作者Damien Rice
相关产品推荐
相关产品推荐

