Шпаргалка "Основы работы с Numpy"
0) Установка и импорт
!pip install numpy import numpy as np
1) Создание массивов
a = np.array([1, 2, 3]) # из списка b = np.array([[1,2],[3,4]]) # 2D np.zeros((3,4)) # из нулей np.ones((2,2)) # из единиц np.full((2,3), 7) # заполнение константой np.eye(3) # единичная матрица np.arange(0, 10, 2) # 0..8 шаг 2 np.linspace(0, 1, 5) # 5 точек от 0 до 1
2) Типы, форма, размерность
a.dtype # тип элементов (int32/float64/…) a.shape # форма (строки, столбцы, …) a.ndim # число измерений a.size # количество элементов a.itemsize # байт на элемент a.nbytes # общий объём в байтах
3) Индексация и срезы
x = np.arange(10) # [0..9] x[0], x[-1] # первый/последний x[2:7] # с 2 по 6 x[:5], x[5:], x[::2] # до 5, после 5, шаг 2 M = np.arange(12).reshape(3,4) M[0, 1] # элемент (0-я строка, 1-й столбец) M[1, :] # вся 2-я строка M[:, 2] # весь 3-й столбец M[0:2, 1:3] # подматрица
4) Булевы маски и фильтрация
x = np.array([3, 7, 1, 9, 4]) mask = x > 4 # [False, True, False, True, False] x[mask] # элементы > 4 x[x % 2 == 1] # нечётные # заменить по условию np.where(x > 4, x*10, x) # если >4 умножить на 10
5) Векторные операции (работают поэлементно)
x = np.array([1,2,3]) y = np.array([10,20,30]) x + y # [11,22,33] x * y # [10,40,90] x / 2 # [0.5,1.0,1.5] x ** 2 # квадрат np.sqrt(x) # корень np.exp(x) # e^x np.log(x) # ln(x)
6) Аггрегации
a = np.arange(1,7).reshape(2,3) # [[1,2,3],[4,5,6]] a.sum() # сумма всех a.mean() # среднее a.min(), a.max() a.sum(axis=0) # по столбцам -> [5,7,9] a.sum(axis=1) # по строкам -> [6,15]
7) Изменение формы
x = np.arange(12) x.reshape(3,4) # новая форма (копии может не быть) x.ravel() # «плоский» вид x.T # транспонирование (для 2D) # конкатенация a = np.array([[1,2],[3,4]]) b = np.array([[5,6]]) np.vstack([a,b]) # по строкам np.hstack([a,b.T]) # по столбцам
8) Broadcasting (автоматическое растягивание)
M = np.ones((3,4)) v = np.array([1,2,3,4]) M + v # v «растянется» на строки c = np.array([[1],[2],[3]]) M + c # c «растянется» на столбцы
9) Случайные числа (np.random)
rng = np.random.default_rng(42) # генератор rng.integers(0, 10, size=5) # целые [0..9] rng.random(3) # U(0,1), 3 числа rng.normal(loc=0, scale=1, size=(2,2)) # нормальное N(0,1) rng.choice([10,20,30], size=4, replace=True) # выборка
10) NaN/inf
x = np.array([1, np.nan, np.inf, -np.inf, 3]) np.isnan(x) # где NaN np.isfinite(x) # не inf и не NaN np.nanmean(x) # среднее игнорируя NaN
12) Сохранение/загрузка
np.save("arr.npy", x) # двоичный формат NumPy np.load("arr.npy") np.savetxt("arr.csv", x, delimiter=",") np.loadtxt("arr.csv", delimiter=",")