Подтвердить что ты не робот

SciPy вместо GNU Octave

Для своих лабораторных экспериментов я пишу небольшие программы, которые помогут с анализом данных. Мне обычно просто нужны базовые вычисления, средние значения, стандартное отклонение, подгонка произвольной взвешенной функции и графики с панелями ошибок и подгоночной функцией.

С GNU Octave я могу это сделать. Я начал больше читать на его языке, и мне не нравятся его несоответствия и то, что я должен выучить еще один язык.

Так что я думаю об использовании Python, который я сейчас использую, с SciPy и NumPy. Могу ли я сделать эти вещи с помощью Python легко или это более накладные расходы, чтобы заставить язык Python общего назначения делать то, что я намерен делать?

4b9b3361

Ответ 1

Да, экосистема 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")

sample pic