NumPy
Массивы и быстрые вычисления над ними: создание, индексация, транслирование, агрегации, линейная алгебра.
Написано для NumPy 2.5.3 · документация
базовый средний продвинутый
1. Основы
- Что такое NumPyБиблиотека для быстрых вычислений над массивами чисел — основа pandas, scikit-learn и почти всего научного Python.базовый
- Настройки отображенияКак NumPy печатает массивы и числа и как временно изменить точность, научную запись и сокращение длинных массивов.базовый
- Создание массивовВсе основные способы получить массив — из списка, заполненный значением, диапазон чисел, единичная матрица.базовый
- Атрибуты массиваФорма, число измерений, размер, тип элементов и занимаемая память — то, что первым делом смотрят у незнакомого массива.базовый
- Типы данных и astypeКакой тип у элементов, как его сменить и почему целые числа в массиве могут молча переполниться.базовый
2. Индексация
- Индексация и срезыКак взять один элемент, диапазон или каждый k-й элемент одномерного массива и как записать туда новые значения.базовый
- Многомерная индексацияЭлемент, строка, столбец или прямоугольный блок двумерного массива — одним индексом через запятую.базовый
- Булевы маскиОтобрать или изменить элементы по условию — без циклов и if.средний
- Fancy-индексацияВыбор элементов по списку индексов — в любом порядке и с повторами.средний
- where, nonzero, selectВыбрать значение по условию для каждого элемента или найти индексы элементов, подходящих под условие.средний
3. Вычисления
- Арифметика с массивамиСложение, умножение, деление и степень сразу для всех элементов — основа любых вычислений в NumPy.базовый
- Сравнение массивовПочему a == b не отвечает «равны ли массивы» и чем проверять равенство целиком — точно и с допуском.базовый
- Базовые агрегацииСумма, среднее, минимум, максимум и их индексы — сворачивают массив в одно число.базовый
- Округление и clipОкруглить до нужного знака, вниз, вверх или к нулю и ограничить значения диапазоном.базовый
- Оси: axis и keepdimsПосчитать сумму, среднее или максимум по строкам или по столбцам — и не перепутать, что значат axis=0 и axis=1.средний
- Универсальные функции (ufunc)Математические функции, которые применяются к каждому элементу со скоростью C, и их методы reduce, accumulate, outer.средний
- Транслирование (broadcasting)Поэлементные операции над массивами разной формы — без циклов и без копирования данных.средний
- Разности: diff и gradientИзменение между соседними элементами — расход по показаниям счётчика, прирост по дням, скорость по координатам.средний
4. Форма массива
- Представления и копииКогда изменение «нового» массива меняет исходный — и как это проверить.средний
- reshape и ravelРазложить те же данные в другую форму — например, 12 значений в таблицу 3 × 4 — или вытянуть таблицу в одну строку.средний
- Оси: T, newaxis, squeezeПоменять оси местами, добавить ось длины 1 или убрать лишние единичные оси.средний
- Объединение и разделениеСклеить несколько массивов в один по существующей или новой оси и разрезать массив на части.средний
- repeat и tileПовторить каждый элемент или весь массив несколько раз.средний
- flip, roll, rot90Развернуть массив по оси, циклически сдвинуть элементы или повернуть матрицу.средний
- Дополнение: padДобавить значения по краям массива — нули, повтор края, зеркальное отражение.средний
5. Сортировка и множества
- СортировкаУпорядочить массив, узнать порядок индексов и отсортировать строки таблицы по столбцу.средний
- searchsorted и partitionБыстрый поиск позиции в отсортированном массиве и выбор k наименьших или наибольших без полной сортировки.средний
- Уникальные значения и множестваСписок различных значений с частотами, проверка вхождения и операции над множествами — пересечение, объединение, разность.средний
6. Данные
- NaN и бесконечностиКак хранить пропуски в массиве, находить их и считать суммы и средние без них.средний
- Случайные числаГенератор случайных чисел: целые и дробные, нормальное распределение, случайный выбор и перемешивание — воспроизводимо через seed.средний
- СтатистикаСреднее, медиана, стандартное отклонение, перцентили, взвешенное среднее и корреляция.средний
- Гистограммы и подсчётСколько значений попало в каждый интервал, сколько раз встретилось каждое целое и к какой группе относится значение.средний
- Сетки: meshgridПолучить координаты всех точек прямоугольной сетки, чтобы посчитать функцию двух переменных без циклов.средний
- Даты: datetime64Массивы дат и промежутков времени — арифметика, диапазоны, рабочие дни.средний
- Сохранение и загрузкаСохранить массив в файл и прочитать обратно — в двоичном формате NumPy или в текстовом CSV.средний
7. Продвинутое
- Матричное умножениеОператор @ и функции dot, inner, outer — чем матричное произведение отличается от поэлементного.продвинутый
- Линейная алгебраРешить систему уравнений, найти обратную матрицу, определитель, собственные значения, норму и приближённое решение методом наименьших квадратов.продвинутый
- Векторизация вместо цикловКак переписать цикл Python на операции над целыми массивами и почему np.vectorize не делает код быстрее.продвинутый
- Операции на месте и out=Изменить массив без создания нового — экономия памяти на больших данных и частый источник неожиданных побочных эффектов.продвинутый
- Порядок памяти и stridesКак массив хранится в памяти, почему транспонирование ничего не копирует и когда порядок влияет на скорость.продвинутый
- Скользящие окнаСкользящее среднее, максимум за последние дни и окна в изображении — без циклов и без копирования данных.продвинутый
- einsumОдна функция для сумм, транспонирования, скалярных и матричных произведений — записанных буквами индексов.продвинутый
- Структурированные массивыМассив записей с именованными полями разных типов — как таблица, но в одном массиве NumPy.продвинутый
- Маскированные массивыМассив с пометкой «значения нет» для отдельных элементов — пропуски даже в целых числах.продвинутый
- apply_along_axisПрименить функцию к каждой строке или столбцу — и понять, когда можно обойтись без этого.продвинутый
- Строки: np.stringsПоэлементные операции над массивами строк и строковый тип без ограничения длины.продвинутый