Простой пример broadcasting при вычитании вектора из матрицы.

import numpy as np
 
# Матрица 2x3
A = np.array([[5, 10, 15],
              [20, 25, 30]])
 
# Вектор длины 3
v = np.array([1, 2, 3])
 
# Вычитание вектора из каждой строки матрицы
B = A - v
 
print(B)

Результат:

[[ 4  8 12]
 [19 23 27]]

Объяснение:

  • A.shape = (2, 3) (shape)
  • v.shape = (3,) (shape)
  • NumPy «растягивает» вектор v по первой оси, чтобы его форма стала (2, 3) логически, и выполняется поэлементное вычитание.

То есть каждая строка матрицы вычитается поэлементно с вектором.