通过Python在不同图形中绘制标准差和均值线
也许标题有点让人困惑。
举个例子,有三个函数:sin(x)、3*sin(x)和sin(x)+1。这里的x从1到100。我想知道怎么能为这三个函数的值画出平均值和标准差的线(上下各加减)。我觉得我可能需要在每个x的值上计算这三个函数值(sin(x)、3*sin(x)和sin(x)+1)的平均值和标准差。不过,我不太确定怎么用Python来实现这个。我知道在Scipy里有计算标准差和平均值的函数,这个可以用在这里吗?
也许这个问题有点傻。不过,我还是个新手,非常感谢任何帮助。
最好的祝福,
艾萨克
2 个回答
0
import numpy as np
def function_1(X):
return np.sin(X)
def function_2(X):
return 3. * np.sin(X)
def function_3(X):
return np.sin(X + 1.)
X = np.arange(100)
# mean
print function_1(X).mean()
# std dev
print function_1(X).std()
# to plot
from matplotlib import pyplot as mp
mp.plot(X, function_1(X))
mp.hlines(function_1(X).mean(), 0, 100)
mp.show()
还有很多其他的情况……但是你真的需要画出正弦函数的“平均值”吗?想想看……
1
我不太确定你具体指的是什么,但也许下面这个例子会对你有帮助:
>>> import numpy as np
>>> x = np.arange(1,100)
>>> m = (sin(x)+1).mean()
>>> s = (sin(x)+1).std()
>>> print m, s
1.00383024876 0.710743876537
[在进一步澄清后编辑]
不过,如果你想要各种函数在每个x点的平均值,像这样做就可以:
>>> y = np.array([sin(x), 3*sin(x), sin(x)+1])
>>> m = y.mean(axis=0)
>>> s = y.std(axis=0)
这样你就能得到100个平均值和100个标准差。
如果你想要合并函数的平均值,那其实就回到了第一个例子:
>>> m = (sin(x) + 3*sin(x) + sin(x)+1).mean()
>>> s = (sin(x) + 3*sin(x) + sin(x)+1).std()
>>> print m, s
1.01915124381 3.55371938269
哪个选项适合你,取决于你问题的具体情况;我对此并不清楚。