Основы библиотеки NumPy для работы с массивами чисел

Основы библиотеки NumPy для работы с массивами чисел#

Глава содержит примеры функций и возможностей массивов NumPy. NumPy - один из фундаментальных пакетов для научных расчётов на Python. Ядро NumPy написано на языке C и скомпилировано, что драматически (в десятки и сотни раз) ускоряет расчёты на Python. NumPy лежит в основе других библиотек высокого уровня для научных расчётов: SciPy (математическая статистика, дифференциальные уравнения и т.д.), Matplotlib (визуализация научных и прочих данных), Pandas (Excel в Python - всё, что необходимо для обработки таблиц данных) и т.п.

Пожалуй, именно благодаря NumPy Python получил настолько широкое распространение как инструмент научных вычислений. Освоив идеи NumPy, вы сможете с лёгкостью работать со всеми остальными библиотеками, основанными на данной библиотеке.

Основные возможности NumPy:

  • работа с многомерными массивами, в частости, с матрицами;

  • векторизованные математические операции с массивами. Это означает, что процессор компьютера с поддержкой инструкций SIMD выполняет операции одновременно (параллельно) сразу над несколькими элементами массивов. Это значительно увеличивает скорость вычислений;

  • имеется модуль линейной алгебры numpy.linalg: обратные матрицы, определители, собственные числа и векторы, решение систем линейных алгебраических уравнений и т.п.;

  • сохранение данных в файлы (в том числе с сжатием) и чтение данных из файлов различных форматов;

  • построение регулярных сеток и вычисления на них и многое другое.

NumPy имеет простой и мощный Python-like синтаксис, который очень гармонично сочетается с Python.

Эффективность NumPy во многом обусловлена тем, что массивы NumPy являются классическими, а именно, имеют фиксированный размер и хранят данные одного типа. Хотя NumPy позволяет хранить и Python-объекты различного типа и размера в одном массиве (с типом данных object), использовать массивы для этого не стоит - производительность может стать хуже, чем у чистого Python. Для хранения сложных объектов стоит использовать средства Python (списки, кортежи и т.д.).