NumPy

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая PBot (обсуждение | вклад) в 12:28, 19 января 2014 (автоматическая замена параметров карточки в соответствии с новым форматом). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
NumPy
Логотип программы NumPy
Скриншот программы NumPy
Результат работы сценария
Тип расширение языка Python
Автор Трэвис Олифант
Разработчик Проект сообщества
Написана на Python, Си[1] и Фортран
Операционная система Кроссплатформенное программное обеспечение
Первый выпуск 1995
Последняя версия 1.7.0 (13 февраля 2013)
Репозиторий github.com/numpy/numpy
Лицензия Лицензия BSD
Сайт numpy.org
Логотип Викисклада Медиафайлы на Викискладе

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

Мотивация

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

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 который теперь тоже не рекомендуется к использованию[3] NumPy объединяет в себе эти два пакета, он построен на базовом коде Numeric и дополнен возможностями Numarray.

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

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

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

См. также

Примечания

  1. The numpy Open Source Project on Open Hub: Languages Page — 2006.
  2. SciPy PerformancePython. Дата обращения: 25 июня 2006. Архивировано 4 апреля 2012 года.
  3. Numarray Homepage. Дата обращения: 24 июня 2006.
  4. NumPy Sourceforge Files. Дата обращения: 24 марта 2008. Архивировано 4 апреля 2012 года.
  5. Oliphant, Travis E. Guide to NumPy. — December 7, 2006.
  6. NumPy 1.3.0 Release Notes. Дата обращения: 2 мая 2009. Архивировано 4 апреля 2012 года.

Ссылки