【发布时间】:2018-06-10 18:14:14
【问题描述】:
假设我有一个数据集并使用 matplotlib 绘制所述数据集的直方图。
n, bins, patches = plt.hist(data, normed=1)
如何使用hist() 返回的n 和bins 值计算标准差?我目前正在这样做以计算平均值:
s = 0
for i in range(len(n)):
s += n[i] * ((bins[i] + bins[i+1]) / 2)
mean = s / numpy.sum(n)
这似乎工作正常,因为我得到了非常准确的结果。但是,如果我尝试像这样计算标准偏差:
t = 0
for i in range(len(n)):
t += (bins[i] - mean)**2
std = np.sqrt(t / numpy.sum(n))
我的结果与numpy.std(data) 返回的结果相差甚远。用每个 bin 的中心点替换左侧 bin 限制也不会改变这一点。我觉得问题在于 n 和 bins 值实际上并不包含关于各个数据点如何在每个 bin 中分布的任何信息,但我的分配工作明确要求我使用它们来计算标准偏差。
【问题讨论】:
-
我可以访问它,但作业明确指出我不应该使用原始数据。我认为整个措辞(“这些值对于计算分布的平均值、方差或其他属性非常有用。”)让我感到困惑,因为它没有提到任何关于结果只是近似值的内容。 :)
标签: python-3.x numpy matplotlib