使用SciPy替代GNU Octave

14

为了帮助数据分析,我编写了一些小程序进行实验室实验。通常我只需要基本的计算、均值、标准偏差、任意加权函数拟合和带误差线和拟合函数的图形。

使用GNU Octave,我可以做到这一点。但我开始进一步学习该语言时,发现它存在不一致性,而且我必须学习另一种语言。

因此,我考虑使用Python,这是我已经使用了一段时间的语言,并配备SciPy和NumPy。我是否能够轻松地使用Python完成这些任务,或者说将通用目的的语言Python用于我想要完成的任务是否会更加繁琐?

1个回答

22

是的,Python 生态系统使其成为日常数据分析任务的可行平台,特别是使用 IPython 接口(但我将在此处坚持使用标准接口)。“[不必]学习另一种语言”的论点在我的看法中很有说服力,并且是我倾向于在这些任务中使用 Python 的原因之一。

>>> import numpy as np
>>> import scipy.optimize

我通常只需要基本的计算。

>>> x = np.linspace(0, 10, 50)
>>> y = 3*x**2+5+2*np.sin(x)
"平均值,标准差"
>>> y.mean()
106.3687338223809
>>> y.std()
91.395548605660522

"任意加权函数拟合"

>>> def func(x, a, b, c):
...     return a*x**2+b+c*np.sin(x)
... 
>>> ynoisy = y + np.random.normal(0, 0.2, size=len(x))
>>> popt, pcov = scipy.optimize.curve_fit(func, x, ynoisy)
>>> popt
array([ 3.00015527,  4.99421236,  2.03380468])

"带误差棒和拟合函数的图表"

xerr = 0.5
yerr = abs(np.random.normal(0.3, 10.0))
fitted_data = func(x, *popt)

# using the simplified, non-object-oriented interface here
# handy for quick plots

from pylab import *
errorbar(x, ynoisy, xerr=xerr, yerr=yerr, c="green", label="actual data")
plot(x, fitted_data, c="blue", label="fitted function")
xlim(0, 10)
ylim(0, 350)
legend()
xlabel("time since post")
ylabel("coolness of Python")
savefig("cool.png")

示例图片


非常感谢您提供的详细答案!这应该能让我很快入门。我只有一个小问题忘了问:如何以合理的方式处理测量和误差元组。(我在这里提出了这个问题。) - Martin Ueding

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接