如何计算模拟高斯数据集各试验组的均值、中位数与标准差
错误原因
TypeError: can't convert type 'ndarray' to numerator/denominator
- 你调用的Python标准库
statistics.mean仅支持传入一维可迭代的数值序列,而你的data是形状为(1000, 100)的二维numpy数组,函数无法直接处理二维数组结构,因此抛出类型错误。
正确实现方案
方案1(推荐):使用numpy自带统计函数
直接调用numpy的原生统计方法,指定axis=1即可沿着每行(对应每组100个数据点的维度)批量计算1000组试验的统计值,运行效率远高于循环调用标准库:
# 计算1000组各自的均值,返回形状为(1000,)的数组 trial_means = np.mean(data, axis=1) # 计算1000组各自的中位数 trial_medians = np.median(data, axis=1) # 计算1000组各自的样本标准差,ddof=1表示除数为N-1,和statistics.stdev计算逻辑一致 trial_stds = np.std(data, axis=1, ddof=1)
方案2:兼容statistics库的实现
如果你需要坚持使用statistics库的方法,需要循环遍历每组数据单独计算:
from statistics import mean, median, stdev trial_means = [mean(row) for row in data] trial_medians = [median(row) for row in data] trial_stds = [stdev(row) for row in data]
内容的提问来源于stack exchange,提问作者user16857156
相关产品推荐
相关产品推荐

