Открыть сервис

NumPy

NumPy (сокращение от Numerical Python) — это библиотека с открытым исходным кодом для языка программирования Python, предназначенная для выполнения научных и инженерных вычислений. Она предоставляет поддержку многомерных массивов и матриц (объект ndarray), а также обширный набор высокоуровневых математических функций для эффективной работы с этими структурами данных. NumPy является фундаментальной основой для многих других библиотек научного стека Python, таких как SciPy, Matplotlib, Pandas и scikit-learn.

История

Разработка NumPy началась в 2005 году как объединение двух проектов: Numeric (созданного Джимом Хьюгининым в 1995 году) и Numarray (разработанного Грин Робинсоном и другими в 2001 году). Основной целью слияния было создание единой, более мощной и гибкой библиотеки, которая объединила бы лучшие черты обоих предшественников. Проект возглавил Трэвис Олифант, который и является основным автором NumPy. Первый стабильный релиз (NumPy 1.0) состоялся в 2006 году. С тех пор библиотека активно развивается сообществом, регулярно выходят новые версии с улучшениями производительности, новыми функциями и исправлениями ошибок.

Ключевые характеристики и устройство

Основной объект: ndarray

Центральным элементом NumPy является n-мерный массив (ndarray). В отличие от стандартных списков Python, ndarray обладает рядом критических преимуществ:

Типы данных (dtype)

NumPy поддерживает множество числовых типов данных, включая:

Индексация и нарезка (Slicing)

NumPy предоставляет мощные средства для доступа к элементам массива:

Функциональные возможности

NumPy включает в себя обширный набор функций, которые можно условно разделить на несколько категорий:

Создание массивов

Математические операции

Манипуляции с формой и размерностью

Ввод/вывод данных

NumPy поддерживает сохранение и загрузку массивов в нескольких форматах:

Применение

NumPy является незаменимым инструментом во многих областях науки и техники:

Производительность и оптимизация

Высокая производительность NumPy достигается за счёт нескольких факторов:

  1. Реализация на C и Fortran: Критические внутренние циклы написаны на компилируемых языках, что обеспечивает скорость, сравнимую с C или Fortran.
  2. Векторизация: Операции над массивами выполняются с помощью оптимизированных библиотек линейной алгебры, таких как BLAS и LAPACK (например, OpenBLAS, Intel MKL).
  3. Управление памятью: Массивы хранятся в непрерывных блоках памяти, что улучшает кэширование и скорость доступа.

Критика и ограничения

Несмотря на свою мощь, NumPy имеет некоторые ограничения:

Интересные факты

Источники

  1. Oliphant, T. E. (2006). A guide to NumPy. Trelgol Publishing.
  2. Документация NumPy. NumPy Reference Guide.
  3. Harris, C. R., Millman, K. J., van der Walt, S. J., et al. (2020). Array programming with NumPy. Nature, 585(7825), 357–362.
  4. Ван дер Вальт, С., Кольберт, С., & Варокво, Г. (2011). The NumPy array: a structure for efficient numerical computation. Computing in Science & Engineering, 13(2), 22–30.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →