我计算了4个列表中每个第n个元素的平均值,如下例所示。我想计算出标准偏差,并将其作为误差条添加到我的图中
y1 = [1, 2, 2, 4, 5]
y2 = [3, 6, 9, 12, 0]
y3 = [2, 3, 4, 5, 6]
y4 = [2, 1, 5, 7, 9]
average = np.array([y1, y2, y3, y4]).mean(axis=0)
y = average.tolist()
plot(x,y)
我该怎么做?
要解决您的第一个问题,您可以按照与当前计算平均值大致相同的方式计算标准偏差。Numpy有一个std
函数,它采用与mean
类似的参数。
std_dev = np.array([y1, y2, y3, y4]).std(axis=0)
对于第二个问题,假设plot(x,y)
来自matplotlib.pyplot
,您可以使用errorbar
,它需要一个额外的yerr
参数,用于指定错误条。
完整的示例脚本:
import numpy as np
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4]
y1 = [1, 2, 2, 4, 5]
y2 = [3, 6, 9, 12, 0]
y3 = [2, 3, 4, 5, 6]
y4 = [2, 1, 5, 7, 9]
datasets = np.array([y1, y2, y3, y4])
average = datasets.mean(axis=0)
std_dev = datasets.std(axis=0)
plt.errorbar(x, average, yerr=std_dev)
plt.show()