Interested Article - NumPy
- 2021-04-04
- 1
NumPy (сокращенно от Numerical Python )— библиотека с открытым исходным кодом для языка программирования Python . Возможности:
- поддержка многомерных массивов (включая матрицы );
- поддержка высокоуровневых математических функций, предназначенных для работы с многомерными массивами.
Назначение
Математические алгоритмы, реализованные на интерпретируемых языках (например, Python), часто работают гораздо медленнее тех же алгоритмов, реализованных на компилируемых языках (например, Фортран , Си , Java ). Библиотека NumPy предоставляет реализации вычислительных алгоритмов (в виде функций и операторов), оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy, работает так же быстро, как эквивалентный код, выполняемый в MATLAB .
Сравнение с MATLAB
NumPy можно рассматривать как свободную альтернативу MATLAB. Язык программирования MATLAB внешне напоминает NumPy: оба они интерпретируемые, оба позволяют выполнять операции над массивами (матрицами), а не над скалярами . Преимущество MATLAB в наличии большого количества пакетов («тулбоксов»), например, . Для 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 обрабатывала большие массивы данных быстрее библиотеки Numeric, но малые массивы обрабатывала медленнее.
Некоторое время использовалась и библиотека Numeric, и библиотека NumArray. Последняя версия Numeric (v24.2) была выпущена 11 ноября 2005 года . Последняя версия NumArray (v1.5.2) вышла 24 августа 2006 года . Библиотека NumArray более не рекомендуется к использованию .
В начале 2005 года программист Трэвис Олифант захотел объединить сообщество вокруг одного проекта и для замены библиотек Numeric и NumArray создал библиотеку NumPy. NumPy был создан на основе кода Numeric. Код Numeric был переписан так, чтобы его было легче поддерживать, и в библиотеку можно было добавить новые возможности. Возможности NumArray были добавлены в NumPy.
Изначально NumPy был частью библиотеки SciPy . Чтобы позволить другим проектам использовать библиотеку NumPy, её код был помещён в отдельный пакет.
Исходный код NumPy находится в открытом доступе. Существует большое количество документации. Имеется даже подробный « Путеводитель по NumPy » .
NumPy v1.3.0 выпущен 5 апреля 2009 года и поддерживает Python v2.6 . Поддержка Python v3 была добавлена начиная с версии 1.5.0.
Библиотека NumPy v.1.26.0 выпущена 16 сентября 2023 года и поддерживает Python 3.12 . Особенностью данного релиза являются:
- Поддержка Python 3.12.0
- Совместимость с Cython 3.0.0
- Использование системы сборки Meson
- Обновлена поддержка архитектуры SIMD
- Исправления для f2py, поддержка meson и bind(x)
- Поддержка для обновленной библиотекки Accelerate BLAS / LAPACK
Версии Python, поддерживаемые в данном релизе: от 3.9 до 3.12.
См. также
Примечания
- — 2006.
- . Дата обращения: 25 июня 2006. 3 апреля 2012 года.
- . Дата обращения: 18 января 2024. 18 января 2024 года.
- . Дата обращения: 24 марта 2008. 3 апреля 2012 года.
- . Дата обращения: 24 июня 2006. 9 июня 2021 года.
- Oliphant, Travis E. (неопр.) . 7 марта 2016 года.
- . Дата обращения: 18 января 2024. 26 декабря 2023 года.
- . Дата обращения: 18 января 2024. 22 ноября 2023 года.
- . Дата обращения: 18 января 2024. 26 декабря 2023 года.
Ссылки
- .
- (русскоязычный ресурс о NumPy)
-
- (англ.)
- (англ.)
- (англ.)
Литература
- Андреас Мюллер, Сара Гвидо. Введение в машинное обучение с помощью 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 .
- 2021-04-04
- 1