Нашли ошибку?
базовыйNumPy 2.5.3

Шпаргалка

Самое нужное из NumPy на одной странице — задача и код, со ссылками на подробные статьи.

Содержание статьи

Во всех строках import numpy as np; a — массив, m — двумерный массив.

Создание → статья

Задача Код
из списка np.array([1, 2, 3])
нули, единицы, число np.zeros((2, 3)), np.ones(5), np.full((2, 2), 7)
диапазон с шагом np.arange(0, 10, 2)
n точек от a до b np.linspace(0, 1, 5)
единичная матрица np.eye(3)
такой же формы np.zeros_like(a)
случайные числа rng = np.random.default_rng(42); rng.integers(0, 10, 5), rng.normal(0, 1, 5) → random

Свойства и типы → атрибуты, типы

Задача Код
форма, число осей, элементов a.shape, a.ndim, a.size
тип элементов, байты a.dtype, a.nbytes
сменить тип a.astype(float), a.astype(np.int32)
пределы типа np.iinfo(np.int8), np.finfo(np.float32)

Индексация → срезы, многомерная

Задача Код
элемент, последний a[0], a[-1]
срез, каждый второй, наоборот a[1:4], a[::2], a[::-1]
элемент, строка, столбец m[1, 2], m[1], m[:, 2]
блок m[:2, 1:3]
по условию a[a > 0], a[(a > 0) & (a < 5)] → маски
по списку индексов a[[0, 2, 4]] → fancy
подматрица по индексам m[np.ix_([0, 2], [1, 3])]
одно из двух значений np.where(a > 0, a, 0) → where
индексы подходящих np.nonzero(a > 0), np.argwhere(m > 0)
независимая копия a[1:4].copy() → копии

Вычисления → арифметика, ufunc

Задача Код
поэлементно a + b, a * 2, a ** 2, np.sqrt(a), np.exp(a), np.log(a)
сумма, среднее, мин., макс. a.sum(), a.mean(), a.min(), a.max() → агрегации
по столбцам / строкам m.sum(axis=0), m.sum(axis=1) → оси
сохранить ось m.mean(axis=1, keepdims=True)
индекс максимума a.argmax(), m.argmax(axis=1)
нарастающий итог, разности np.cumsum(a), np.diff(a) → diff
поэлементный максимум двух np.maximum(a, b)
округлить, ограничить np.round(a, 2), np.clip(a, 0, 100) → округление
равны ли массивы np.array_equal(a, b), np.allclose(a, b) → сравнение
вектор как столбец a[:, np.newaxis] → транслирование

Форма → reshape, оси

Задача Код
новая форма a.reshape(3, 4), a.reshape(-1, 2)
в одну строку a.ravel(), a.flatten()
транспонировать m.T
добавить / убрать ось np.expand_dims(a, 0), np.squeeze(a)
склеить np.concatenate([a, b]), np.vstack([a, b]), np.hstack([a, b]) → склейка
новая ось при склейке np.stack([a, b])
разрезать np.split(a, 3), np.array_split(a, 3)
повторить np.repeat(a, 2), np.tile(a, 2) → repeat
развернуть, сдвинуть np.flip(a), np.roll(a, 1) → flip
дополнить края np.pad(a, 2, mode="edge") → pad

Сортировка и поиск → сортировка, поиск

Задача Код
отсортировать np.sort(a), np.sort(a, descending=True)
порядок индексов np.argsort(a)
строки по столбцу m[m[:, 1].argsort()]
позиция в отсортированном np.searchsorted(a, v)
k наибольших np.partition(a, -k)[-k:]
уникальные и частоты np.unique(a, return_counts=True) → множества
есть ли в наборе np.isin(a, [1, 2])

Данные → NaN, статистика

Задача Код
найти пропуски np.isnan(a)
среднее без NaN np.nanmean(a), np.nansum(a)
заменить NaN np.nan_to_num(a), np.where(np.isnan(a), 0, a)
медиана, перцентили np.median(a), np.percentile(a, [25, 75])
стандартное отклонение a.std(), выборочное — a.std(ddof=1)
корреляция np.corrcoef(x, y)[0, 1]
гистограмма counts, edges = np.histogram(a, bins=10) → гистограммы
подсчёт целых np.bincount(a)
сетка координат X, Y = np.meshgrid(x, y) → meshgrid
сохранить / загрузить np.save("a.npy", a), np.load("a.npy"), np.loadtxt("a.csv", delimiter=",") → файлы

Линейная алгебра → умножение, linalg

Задача Код
матричное произведение A @ B
решить A x = b np.linalg.solve(A, b)
обратная, определитель np.linalg.inv(A), np.linalg.det(A)
собственные значения np.linalg.eigh(A) (симметричная), np.linalg.eig(A)
норма np.linalg.norm(v)
наименьшие квадраты np.linalg.lstsq(X, y)
произвольные свёртки индексов np.einsum("ij,jk->ik", A, B) → einsum