NumPy

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
NumPy
Numpylogo.png
Тип

расширение языка Python

Разработчик

Проект сообщества

Написана на

Си и Python

Операционная система

Кроссплатформенное программное обеспечение

Последняя версия

1.7.0 (13 февраля 2013)

Лицензия

Лицензия BSD

Сайт

numpy.org

NumPy — это расширение языка Python, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами. Предшественник NumPy, Numeric, был изначально создан Jim Hugunin. NumPy — открытое программное обеспечение, поучаствовать в разработке может любой желающий.

Мотивация[править | править исходный текст]

Поскольку Python — интерпретируемый язык, математические алгоритмы часто работают в нём гораздо медленнее, чем в компилируемых языках, таких как Си или Java. NumPy пытается решить эту проблему для большого количества вычислительных алгоритмов, обеспечивая поддержку многомерных массивов и множество функций и операторов для работы с ними. Таким образом, любой алгоритм, который может быть выражен в основном как последовательность операций над массивами и матрицами, работает так же быстро, как эквивалентный код, выполняемый в MATLAB, а после специальной оптимизации скорость может достигнуть скорости компилируемых языков типа Си.[1]

NumPy можно рассматривать как хорошую свободную альтернативу MATLAB, поскольку язык программирования MATLAB внешне напоминает NumPy: оба они интерпретируемые, и оба позволяют пользователям писать быстрые программы, пока большинство операций производятся над массивами или матрицами, а не над скалярами. Преимущество MATLAB в большом количестве доступных дополнительных тулбоксов, включая такие как пакет Simulink. Основные пакеты, дополняющие NumPy, это: SciPy — библиотека, добавляющая больше MATLAB-подобной функциональности; Matplotlib — пакет для создания графики в стиле MATLAB. Внутренне как MATLAB, так и NumPy основаны на библиотеке LAPACK, предназначенной для решения основных задач линейной алгебры.

Пример[править | править исходный текст]

Результат работы скрипта

Это простой пример интерактивной манипуляции с массивами и отрисовки графика в NumPy. В примере также использована интерактивная оболочка IPython и графическая библиотека Matplotlib.

# Запуск Python из командной строки.
shell> ipython -pylab
Python 2.5.1 (r251:54863, Jun 15 2008, 18:24:51) 
Type "copyright", "credits" or "license" for more information.

IPython 0.8.2 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object'. ?object also works, ?? prints more.

  Welcome to pylab, a matplotlib-based Python environment.
  For more information, type 'help(pylab)'.

# Непосредственно код:
In [1]: x = linspace(0, 2*pi, 100)
In [2]: y = sin(x)
In [3]: plot(x,y,'ro-')

История NumPy[править | править исходный текст]

NumPy основан на двух более ранних пакетах для Python. Сначала был Numeric, вполне стабильный и полный, доступный по сей день, но устаревший. Он был написан в 1995 году программистом Jim Hugunin при участии многих людей, среди которых Jim Fulton, David Ascher, Paul DuBois, и Konrad Hinsen. Более новая версия под названием Numarray это полностью переписанный Numeric который теперь тоже не рекомендуется к использованию[2] NumPy объединяет в себе эти два пакета, он построен на базовом коде Numeric и дополнен возможностями Numarray.

Были высказаны пожелания добавить Numeric в стандартную библиотеку Python, но Гвидо Ван Россум (автор Python) четко дал понять, что код в его тогдашнем состоянии было невозможно поддерживать. Другая проблема заключалась в том что на больших массивах Numeric был очень медленным. В результате был создан Numarray. Он быстрее на больших массивах, но медленнее на малых. Некоторое время использовались оба пакета. Последняя версия Numeric v24.2 была выпущена 11 Ноября 2005 года, а последняя версия numarray v1.5.2 вышла 24 августа 2006.[3]

В начале 2005 Travis Oliphant захотел объединить сообщество вокруг одного пакета матричных вычислений. Код Numeric был переписан так чтобы его было легче поддерживать и чтобы он мог включить новые возможности Numarray. Этот новый проект был частью SciPy. Чтобы не загружать весь пакет SciPy ради создания массива, NumPy был выделен в отдельный пакет. Хотя исходный код находится в открытом доступе и содержит большое количество документации, имеется также подробный Путеводитель по NumPy[4]

NumPy version 1.3.0, выпущен 5 Апреля 2009 года и поддерживает Python 2.6.[5] Поддержка Python 3 реализована начиная с версии 1.5.0.

См. также[править | править исходный текст]

Примечания[править | править исходный текст]

Ссылки[править | править исходный текст]