NumPy
NumPy | |||
---|---|---|---|
Файл:Numpylogo.png | |||
| |||
Тип | расширение языка Python | ||
Автор | Трэвис Олифант | ||
Разработчик | Проект сообщества | ||
Написана на | Python, Си[1] и Фортран | ||
Операционная система | Кроссплатформенное программное обеспечение | ||
Первый выпуск | 1995 | ||
Последняя версия | 1.7.0 (13 февраля 2013) | ||
Репозиторий | github.com/numpy/numpy | ||
| |||
| |||
Лицензия | Лицензия BSD | ||
Сайт | numpy.org | ||
Медиафайлы на Викискладе |
NumPy — это расширение языка Python, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами. Предшественник NumPy, Numeric, был изначально создан Jim Hugunin. NumPy — открытое программное обеспечение, поучаствовать в разработке может любой желающий.
Мотивация
Поскольку Python — интерпретируемый язык, математические алгоритмы часто работают в нём гораздо медленнее, чем в компилируемых языках, таких как Cи или Java. NumPy пытается решить эту проблему для большого количества вычислительных алгоритмов, обеспечивая поддержку многомерных массивов и множество функций и операторов для работы с ними. Таким образом, любой алгоритм, который может быть выражен в основном как последовательность операций над массивами и матрицами, работает так же быстро, как эквивалентный код, выполняемый в MATLAB, а после специальной оптимизации скорость может достигнуть скорости компилируемых языков типа Cи.[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.
См. также
Примечания
- ↑ The numpy Open Source Project on Open Hub: Languages Page — 2006.
- ↑ SciPy PerformancePython . Дата обращения: 25 июня 2006. Архивировано 4 апреля 2012 года.
- ↑ Numarray Homepage . Дата обращения: 24 июня 2006.
- ↑ NumPy Sourceforge Files . Дата обращения: 24 марта 2008. Архивировано 4 апреля 2012 года.
- ↑ Oliphant, Travis E. Guide to NumPy. — December 7, 2006.
- ↑ NumPy 1.3.0 Release Notes . Дата обращения: 2 мая 2009. Архивировано 4 апреля 2012 года.