В NumPy можно выполнять арифметические операции над массивами поэлементно без явных циклов Python. Это реализуется через векторизацию и broadcasting.
Примеры:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
# Поэлементное сложение
c = a + b # array([11, 22, 33])
# Поэлементное вычитание
d = b - a # array([9, 18, 27])
# Поэлементное умножение
e = a * b # array([10, 40, 90])
# Поэлементное деление
f = b / a # array([10., 10., 10.])
# Применение функций
g = np.sqrt(a) # array([1. , 1.41421356, 1.73205081])
h = np.exp(a) # array([ 2.71828183, 7.3890561 , 20.08553692])Особенности:
- Все операции выполняются внутри NumPy на уровне C, без Python-циклов.
- Размеры массивов должны быть совместимы по правилам broadcasting. Например:
a = np.array([1, 2, 3]) # shape (3,)
b = np.array([[10], [20]]) # shape (2,1)
a + b # shape (2,3), b "растянулся" по последней оси- Можно комбинировать арифметику с функциями
np.sum,np.mean,np.maxпо выбранной оси, без циклов:
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
np.sum(matrix, axis=0) # [5, 7, 9] — сумма по столбцам
np.mean(matrix, axis=1) # [2., 5.] — среднее по строкамИдея: писать операции как над целыми массивами, NumPy сам решает, как эффективно пройтись по памяти.