NumPy: различия между версиями
[непроверенная версия] | [непроверенная версия] |
BsivkoBot (обсуждение | вклад) |
Спасено источников — 4, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.9.5 |
||
(не показано 17 промежуточных версий 12 участников) | |||
Строка 1: | Строка 1: | ||
{{Карточка программы |
{{Карточка программы |
||
| снимок экрана = NumPy Matplotlib sin x plotted with red dots.svg |
|||
| name = NumPy |
|||
| logo = NumPy logo.svg |
|||
| screenshot = |
|||
| caption = |
|||
| genre = Библиотека для [[Язык программирования|языка]] [[Python]] |
|||
| developer = Сообщество |
|||
| programming_language = |
|||
| operating_system = [[Кроссплатформенное программное обеспечение]] |
|||
| latest_release_version = 1.16.4 |
|||
| latest_release_date = [[28 мая]] [[2019 год]]а |
|||
| latest_preview_version = |
|||
| latest_preview_date = |
|||
| license = [[Лицензия BSD|BSD]] |
|||
| website = http://numpy.org/ |
|||
}} |
}} |
||
'''NumPy''' — библиотека с [[открытое программное обеспечение|открытым]] [[Исходный код|исходным кодом]] для [[Язык программирования|языка программирования]] [[Python]]. Возможности: |
'''NumPy''' (сокращенно от ''Numerical Python'')— библиотека с [[открытое программное обеспечение|открытым]] [[Исходный код|исходным кодом]] для [[Язык программирования|языка программирования]] [[Python]]. Возможности: |
||
* поддержка многомерных [[Индексный массив|массивов]] (включая [[Матрица (математика)|матрицы]]); |
* поддержка многомерных [[Индексный массив|массивов]] (включая [[Матрица (математика)|матрицы]]); |
||
* поддержка [[Высокоуровневый язык программирования|высокоуровневых]] математических функций, предназначенных для работы с многомерными массивами. |
* поддержка [[Высокоуровневый язык программирования|высокоуровневых]] математических функций, предназначенных для работы с многомерными массивами. |
||
== Назначение == |
== Назначение == |
||
Математические алгоритмы, реализованные на [[Интерпретируемый язык программирования|интерпретируемых языках]] (например, Python), часто работают гораздо медленнее тех же алгоритмов, реализованных на [[Компилируемый язык программирования|компилируемых языках]] (например, [[Фортран]], [[Си (язык программирования)|Си]], [[Java]]). Библиотека NumPy предоставляет реализации [[Вычислительная математика|вычислительных]] [[алгоритм]]ов (в виде функций и операторов), оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy, работает так же быстро, как эквивалентный код, выполняемый в [[MATLAB]]<ref>{{cite web |
Математические алгоритмы, реализованные на [[Интерпретируемый язык программирования|интерпретируемых языках]] (например, Python), часто работают гораздо медленнее тех же алгоритмов, реализованных на [[Компилируемый язык программирования|компилируемых языках]] (например, [[Фортран]], [[Си (язык программирования)|Си]], [[Java]]). Библиотека NumPy предоставляет реализации [[Вычислительная математика|вычислительных]] [[алгоритм]]ов (в виде функций и операторов), оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy, работает так же быстро, как эквивалентный код, выполняемый в [[MATLAB]]<ref>{{cite web |
||
|title = SciPy PerformancePython |
|title = SciPy PerformancePython |
||
Строка 31: | Строка 17: | ||
== Сравнение с MATLAB == |
== Сравнение с MATLAB == |
||
⚫ | NumPy можно рассматривать как свободную альтернативу MATLAB. Язык программирования MATLAB внешне напоминает NumPy: оба они интерпретируемые, оба позволяют выполнять операции над массивами (матрицами), а не над [[скаляр]]ами. Преимущество MATLAB в наличии большого количества пакетов («тулбоксов»), например, {{не переведено|Simulink|Simulink|en|Simulink}}. Для NumPy тоже существуют подобные «пакеты», например, библиотека [[SciPy]] предоставляет больше MATLAB-подобной функциональности, библиотека [[Matplotlib]] позволяет создавать графики в стиле MATLAB. И MATLAB, и NumPy для решения основных задач [[Линейная алгебра|линейной алгебры]] используют код, основанный на коде библиотеки [[LAPACK]]. |
||
⚫ | NumPy можно рассматривать как свободную альтернативу MATLAB. Язык программирования MATLAB внешне напоминает NumPy: оба они интерпретируемые, оба позволяют выполнять операции над массивами (матрицами), а не над [[скаляр]]ами. Преимущество MATLAB в наличии большого количества пакетов («тулбоксов»), например, {{не переведено| |
||
== Пример == |
== Пример == |
||
[[Файл:Numpy example.png|thumb| Результат работы сценария]] |
|||
Рассмотрим пример работы с NumPy в интерактивной оболочке [[IPython]]. |
Рассмотрим пример работы с NumPy в интерактивной оболочке [[IPython]]. |
||
Запуск |
Запуск iPython из командной строки: |
||
<source lang="bash"> |
<source lang="bash"> |
||
ipython |
ipython |
||
</source> |
</source> |
||
Код на языке Python, с использованием библиотек [[numpy]] и [[matplotlib]]: |
|||
Код: |
|||
< |
<syntaxhighlight lang="python"> |
||
import numpy as np |
|||
import matplotlib.pyplot as plt |
|||
# функция y = sin(x) |
|||
x = linspace(0, 2*pi, 100) |
x = np.linspace(0, 2*np.pi, 100) |
||
y = sin(x) |
y = np.sin(x) |
||
⚫ | |||
# нарисовать график в виде отдельных точек, в форме "o" |
|||
⚫ | |||
⚫ | |||
</source> |
|||
# сохранить рисунок в формат SVG |
|||
В результате работы сценария библиотека Matplotlib создаст график, изображённый на рисунке. |
|||
plt.savefig('matplotlib_sin_x_red_dots.svg') |
|||
# показать интерактивное окно с графиком |
|||
⚫ | |||
⚫ | |||
</syntaxhighlight> |
|||
В результате выполнения кода на языке Python и использованием библиотек NumPy и Matplotlib будет создан график, приведённый на рисунке. |
|||
⚫ | |||
[[Файл:NumPy Matplotlib sin x plotted with red dots.svg|450px|мини|справа|альт=График функции sin(x), построенный с использованием библиотек NumPy и Matplotlib|График функции y=sin(x), построенный с использованием библиотек NumPy и Matplotlib]] |
|||
⚫ | |||
⚫ | |||
Предлагалось добавить Numeric в стандартную библиотеку языка Python, но [[Ван Россум, Гвидо|Гвидо Ван Россум]] (автор Python) чётко дал понять, что код в его тогдашнем состоянии было невозможно поддерживать. |
Предлагалось добавить Numeric в стандартную библиотеку языка Python, но [[Ван Россум, Гвидо|Гвидо Ван Россум]] (автор языка программирования [[Python]]) чётко дал понять, что код в его тогдашнем состоянии было невозможно поддерживать. |
||
Кроме того, библиотека Numeric медленно обрабатывала большие массивы данных. |
Кроме того, библиотека Numeric медленно обрабатывала большие массивы данных. |
||
Строка 70: | Строка 61: | ||
На основе библиотеки Numeric была создана библиотека NumArray. Код Numeric был полностью переписан. |
На основе библиотеки Numeric была создана библиотека NumArray. Код Numeric был полностью переписан. |
||
Библиотека NumArray<ref>{{cite web |
|||
⚫ | |||
|title = numarray: A New Scientific Array Package for Python |
|||
|url = https://svn.python.org/www/trunk/pydotorg/pycon/papers/numarray.html |
|||
|accessdate = 2024-01-18 |
|||
|archive-date = 2024-01-18 |
|||
|archive-url = https://web.archive.org/web/20240118134338/https://svn.python.org/www/trunk/pydotorg/pycon/papers/numarray.html |
|||
|url-status = live |
|||
⚫ | |||
Некоторое время использовалась и библиотека Numeric, и библиотека NumArray. Последняя версия Numeric (v24.2) была выпущена [[11 ноября]] [[2005 |
Некоторое время использовалась и библиотека Numeric, и библиотека NumArray. Последняя версия Numeric (v24.2) была выпущена [[11 ноября]] [[2005 год]]а. Последняя версия NumArray (v1.5.2) вышла [[24 августа]] [[2006 год]]а<ref>{{cite web |
||
|title = NumPy Sourceforge Files |
|title = NumPy Sourceforge Files |
||
|url = http://sourceforge.net/project/showfiles.php?group_id=1369 |
|url = http://sourceforge.net/project/showfiles.php?group_id=1369 |
||
Строка 82: | Строка 80: | ||
| url = http://www.stsci.edu/resources/software_hardware/numarray |
| url = http://www.stsci.edu/resources/software_hardware/numarray |
||
| accessdate = 2006-06-24 |
| accessdate = 2006-06-24 |
||
| archive-date = 2021-06-09 |
|||
| archive-url = https://web.archive.org/web/20210609072444/https://www.stsci.edu/maintenance/bad-proxy.html |
|||
| deadlink = no |
|||
}}</ref>. |
}}</ref>. |
||
В начале 2005 |
В начале 2005 года программист [[Трэвис Олифант]] захотел объединить сообщество вокруг одного проекта и для замены библиотек Numeric и NumArray создал библиотеку NumPy. NumPy был создан на основе кода Numeric. Код Numeric был переписан так, чтобы его было легче поддерживать, и в библиотеку можно было добавить новые возможности. Возможности NumArray были добавлены в NumPy. |
||
Изначально NumPy был частью библиотеки SciPy. Чтобы позволить другим проектам использовать библиотеку NumPy, её код был помещён в отдельный пакет. |
Изначально NumPy был частью библиотеки [[SciPy]]. Чтобы позволить другим проектам использовать библиотеку NumPy, её код был помещён в отдельный пакет. |
||
Исходный код NumPy находится в открытом доступе. Существует большое количество документации. Имеется даже подробный «''Путеводитель по NumPy''»<ref>{{книга |
Исходный код NumPy находится в открытом доступе. Существует большое количество документации. Имеется даже подробный «''Путеводитель по NumPy''»<ref>{{книга |
||
|заглавие=Guide to NumPy |
|заглавие=Guide to NumPy |
||
|ссылка=http://web.mit.edu/dvp/Public/numpybook.pdf |
|ссылка=http://web.mit.edu/dvp/Public/numpybook.pdf |
||
|язык= |
|язык=English |
||
|автор=Oliphant, Travis E. |
|автор=Oliphant, Travis E. |
||
⚫ | |||
|archiveurl=https://web.archive.org/web/20160307223523/http://web.mit.edu/dvp/Public/numpybook.pdf |
|||
}}</ref>. |
}}</ref>. |
||
NumPy v1.3.0 выпущен [[5 апреля]] [[2009 |
NumPy v1.3.0 выпущен [[5 апреля]] [[2009 год]]а и поддерживает Python v2.6<ref>{{cite web |
||
|title = NumPy 1.3.0 Release Notes |
|||
|url |
|url = https://numpy.org/doc/stable/release/1.3.0-notes.html |
||
|accessdate = |
|accessdate = 2024-01-18 |
||
|archive-date = 2023-12-26 |
|||
|archiveurl = https://www.webcitation.org/66ermLXgs?url=http://sourceforge.net/project/shownotes.php?release_id=673613 |
|||
|archive-url = https://web.archive.org/web/20231226210132/https://numpy.org/doc/stable/release/1.3.0-notes.html |
|||
⚫ | |||
|url-status = live |
|||
}}</ref>. Поддержка Python v3 была добавлена начиная с версии 1.5.0. |
}}</ref>. Поддержка Python v3 была добавлена начиная с версии 1.5.0.<ref>{{cite web |
||
|title = NumPy 1.5.0 Release Notes |
|||
|url = https://numpy.org/doc/stable/release/1.5.0-notes.html |
|||
|accessdate = 2024-01-18 |
|||
|archive-date = 2023-11-22 |
|||
|archive-url = https://web.archive.org/web/20231122165826/https://numpy.org/doc/stable/release/1.5.0-notes.html |
|||
|url-status = live |
|||
}}</ref> |
|||
Библиотека NumPy v.1.26.0 выпущена [[16 сентября]] [[2023 год]]а и поддерживает Python 3.12<ref>{{cite web |
|||
⚫ | |||
|title = NumPy 1.26.0 Release Notes |
|||
|url = https://numpy.org/doc/stable/release/1.26.0-notes.html |
|||
|accessdate = 2024-01-18 |
|||
|archive-date = 2023-12-26 |
|||
|archive-url = https://web.archive.org/web/20231226204750/https://numpy.org/doc/stable/release/1.26.0-notes.html |
|||
|url-status = live |
|||
}}</ref>. |
|||
Особенностью данного релиза являются: |
|||
* Поддержка Python 3.12.0 |
|||
* Совместимость с Cython 3.0.0 |
|||
* Использование системы сборки [[Meson_(система_сборки)|Meson]] |
|||
* Обновлена поддержка архитектуры [[SIMD]] |
|||
* Исправления для f2py, поддержка meson и bind(x) |
|||
* Поддержка для обновленной библиотекки Accelerate [[Basic_Linear_Algebra_Subprograms|BLAS]]/[[LAPACK]] |
|||
Версии Python, поддерживаемые в данном релизе: от 3.9 до 3.12. |
|||
⚫ | |||
* [[Matplotlib]] |
* [[Matplotlib]] |
||
* [[SciPy]] |
* [[SciPy]] |
||
* [[Theano]] |
|||
== Примечания == |
== Примечания == |
||
Строка 112: | Строка 140: | ||
== Ссылки == |
== Ссылки == |
||
* [http://www.numpy.org/ Официальный сайт NumPy]. |
* [http://www.numpy.org/ Официальный сайт NumPy]. |
||
*[https://pyprog.pro/ pyprog.pro] (русскоязычный ресурс о NumPy) |
* [https://pyprog.pro/ pyprog.pro] (русскоязычный ресурс о NumPy) |
||
* [https://web.archive.org/web/20080316030800/http://www.scipy.org/NumPy NumPy Project Homepage] |
* [https://web.archive.org/web/20080316030800/http://www.scipy.org/NumPy NumPy Project Homepage] |
||
:*[https://web.archive.org/web/20070927015018/http://www.scipy.org/History_of_SciPy/ History of SciPy]{{ref-en}} |
:* [https://web.archive.org/web/20070927015018/http://www.scipy.org/History_of_SciPy/ History of SciPy]{{ref-en}} |
||
:* [http://www.scipy.org/Cookbook/BuildingArrays Building Arrays]{{ref-en}} |
:* [http://www.scipy.org/Cookbook/BuildingArrays Building Arrays]{{ref-en}} |
||
:* [https://web.archive.org/web/20130615013146/http://wiki.scipy.org/Numpy_Example_List_With_Doc Numpy Example List With Doc]{{ref-en}} |
:* [https://web.archive.org/web/20130615013146/http://wiki.scipy.org/Numpy_Example_List_With_Doc Numpy Example List With Doc]{{ref-en}} |
||
== Литература == |
== Литература == |
||
Строка 142: | Строка 169: | ||
| isbn = 978-5-496-03068-7 |
| isbn = 978-5-496-03068-7 |
||
}} |
}} |
||
{{Python}} |
{{Python}} |
||
{{Научное программное обеспечение на Python}} |
|||
[[Категория:Библиотеки Python]] |
[[Категория:Библиотеки Python]] |
Текущая версия от 04:26, 29 января 2024
NumPy | |||
---|---|---|---|
Тип | Python-библиотека[вд] и математическое ПО[вд] | ||
Автор | Трэвис Олифант | ||
Разработчики | Трэвис Олифант, Charles R. Harris[вд], Eric Wieser[вд], Pauli Virtanen[вд] и Matti Picus[вд] | ||
Написана на | Python, Си[2] и Фортран | ||
Операционные системы | Unix-подобная операционная система, macOS и Windows | ||
Первый выпуск | 1995 | ||
Последняя версия | |||
Репозиторий | github.com/numpy/numpy | ||
| |||
| |||
Лицензия | модифицированная лицензия BSD[вд][3] | ||
Сайт | numpy.org (англ.) (яп.) (порт.) | ||
Медиафайлы на Викискладе |
NumPy (сокращенно от Numerical Python)— библиотека с открытым исходным кодом для языка программирования Python. Возможности:
- поддержка многомерных массивов (включая матрицы);
- поддержка высокоуровневых математических функций, предназначенных для работы с многомерными массивами.
Назначение
[править | править код]Математические алгоритмы, реализованные на интерпретируемых языках (например, Python), часто работают гораздо медленнее тех же алгоритмов, реализованных на компилируемых языках (например, Фортран, Си, Java). Библиотека NumPy предоставляет реализации вычислительных алгоритмов (в виде функций и операторов), оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy, работает так же быстро, как эквивалентный код, выполняемый в MATLAB[4].
Сравнение с MATLAB
[править | править код]NumPy можно рассматривать как свободную альтернативу MATLAB. Язык программирования MATLAB внешне напоминает NumPy: оба они интерпретируемые, оба позволяют выполнять операции над массивами (матрицами), а не над скалярами. Преимущество MATLAB в наличии большого количества пакетов («тулбоксов»), например, Simulink[англ.]. Для NumPy тоже существуют подобные «пакеты», например, библиотека SciPy предоставляет больше MATLAB-подобной функциональности, библиотека Matplotlib позволяет создавать графики в стиле MATLAB. И MATLAB, и NumPy для решения основных задач линейной алгебры используют код, основанный на коде библиотеки LAPACK.
Пример
[править | править код]Рассмотрим пример работы с NumPy в интерактивной оболочке IPython.
Запуск iPython из командной строки:
ipython
Код на языке Python, с использованием библиотек numpy и matplotlib:
import numpy as np
import matplotlib.pyplot as plt
# функция y = sin(x)
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
# нарисовать график в виде отдельных точек, в форме "o"
plt.plot(x, y,"ro")
# сохранить рисунок в формат SVG
plt.savefig('matplotlib_sin_x_red_dots.svg')
# показать интерактивное окно с графиком
plt.show()
В результате выполнения кода на языке Python и использованием библиотек NumPy и Matplotlib будет создан график, приведённый на рисунке.
История
[править | править код]В 1995 году программист Jim Hugunin написал библиотеку Numeric для языка Python. Библиотека развивалась при участии многих людей, среди которых были Jim Fulton, David Ascher, Paul DuBois и Konrad Hinsen. Библиотека доступна по сей день, считается вполне стабильной и полной, но устаревшей.
Предлагалось добавить Numeric в стандартную библиотеку языка Python, но Гвидо Ван Россум (автор языка программирования Python) чётко дал понять, что код в его тогдашнем состоянии было невозможно поддерживать.
Кроме того, библиотека Numeric медленно обрабатывала большие массивы данных.
На основе библиотеки Numeric была создана библиотека NumArray. Код Numeric был полностью переписан.
Библиотека NumArray[5] обрабатывала большие массивы данных быстрее библиотеки Numeric, но малые массивы обрабатывала медленнее.
Некоторое время использовалась и библиотека Numeric, и библиотека NumArray. Последняя версия Numeric (v24.2) была выпущена 11 ноября 2005 года. Последняя версия NumArray (v1.5.2) вышла 24 августа 2006 года[6]. Библиотека NumArray более не рекомендуется к использованию[7].
В начале 2005 года программист Трэвис Олифант захотел объединить сообщество вокруг одного проекта и для замены библиотек Numeric и NumArray создал библиотеку NumPy. NumPy был создан на основе кода Numeric. Код Numeric был переписан так, чтобы его было легче поддерживать, и в библиотеку можно было добавить новые возможности. Возможности NumArray были добавлены в NumPy.
Изначально NumPy был частью библиотеки SciPy. Чтобы позволить другим проектам использовать библиотеку NumPy, её код был помещён в отдельный пакет.
Исходный код NumPy находится в открытом доступе. Существует большое количество документации. Имеется даже подробный «Путеводитель по NumPy»[8].
NumPy v1.3.0 выпущен 5 апреля 2009 года и поддерживает Python v2.6[9]. Поддержка Python v3 была добавлена начиная с версии 1.5.0.[10]
Библиотека NumPy v.1.26.0 выпущена 16 сентября 2023 года и поддерживает Python 3.12[11]. Особенностью данного релиза являются:
- Поддержка Python 3.12.0
- Совместимость с Cython 3.0.0
- Использование системы сборки Meson
- Обновлена поддержка архитектуры SIMD
- Исправления для f2py, поддержка meson и bind(x)
- Поддержка для обновленной библиотекки Accelerate BLAS/LAPACK
Версии Python, поддерживаемые в данном релизе: от 3.9 до 3.12.
См. также
[править | править код]Примечания
[править | править код]- ↑ Release 2.1.3 — 2024.
- ↑ The numpy Open Source Project on Open Hub: Languages Page — 2006.
- ↑ https://github.com/numpy/numpy/blob/master/LICENSE.txt
- ↑ SciPy PerformancePython . Дата обращения: 25 июня 2006. Архивировано 3 апреля 2012 года.
- ↑ numarray: A New Scientific Array Package for Python . Дата обращения: 18 января 2024. Архивировано 18 января 2024 года.
- ↑ NumPy Sourceforge Files . Дата обращения: 24 марта 2008. Архивировано 3 апреля 2012 года.
- ↑ Numarray Homepage . Дата обращения: 24 июня 2006. Архивировано 9 июня 2021 года.
- ↑ Oliphant, Travis E. Guide to NumPy (неопр.). Архивировано 7 марта 2016 года.
- ↑ NumPy 1.3.0 Release Notes . Дата обращения: 18 января 2024. Архивировано 26 декабря 2023 года.
- ↑ NumPy 1.5.0 Release Notes . Дата обращения: 18 января 2024. Архивировано 22 ноября 2023 года.
- ↑ NumPy 1.26.0 Release Notes . Дата обращения: 18 января 2024. Архивировано 26 декабря 2023 года.
Ссылки
[править | править код]- Официальный сайт NumPy.
- pyprog.pro (русскоязычный ресурс о NumPy)
- NumPy Project Homepage
- History of SciPy (англ.)
- Building Arrays (англ.)
- Numpy Example List With Doc (англ.)
Литература
[править | править код]- Андреас Мюллер, Сара Гвидо. Введение в машинное обучение с помощью Python. Руководство для специалистов по работе с данными = Introduction to Machine Learning with Python: A Guide for Data Scientists. — Вильямс, 2017. — 480 с. — ISBN 978-5-9908910-8-1, 978-1-449-36941-5.
- Дж. Вандер Плас. Python для сложных задач. Наука о данных и машинное обучение = Python Data Science Handbook: Essential Tools for Working with Data. — Питер, 2017. — 576 с. — ISBN 978-5-496-03068-7.