Понимание несовместимых форм
Broadcasting завершится ошибкой, если формы массивов несовместимы согласно правилам. Это приведет к ValueError. Понимание того, когда это происходит, крайне важно для отладки.
Попробуем выполнить операцию с несовместимыми формами. Здесь мы попытаемся сложить массив формы (2, 3) с массивом формы (2,). NumPy сравнивает последние размерности (3 и 2), обнаруживает, что они не равны, и ни одна из них не равна 1. Это вызовет ошибку.
Измените файл broadcasting.py, чтобы он содержал следующий код:
import numpy as np
## Создаем двумерный массив (форма: 2, 3)
a = np.array([[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0]])
## Создаем несовместимый одномерный массив (форма: 2,)
b = np.array([1.0, 2.0])
print("Массив 'a' (форма {}):\n{}".format(a.shape, a))
print("Массив 'b' (форма {}): {}".format(b.shape, b))
## Это вызовет ValueError
try:
result = a + b
except ValueError as e:
print("\nОшибка:", e)
Запустите скрипт из терминала:
python broadcasting.py
Как и ожидалось, программа перехватывает ValueError и выводит сообщение об ошибке, объясняющее, что формы не выровнены. Это правильное и ожидаемое поведение для несовместимых форм.
Массив 'a' (форма (2, 3)):
[[1. 2. 3.]
[4. 5. 6.]]
Массив 'b' (форма (2,)): [1. 2.]
Ошибка: operands could not be broadcast together with shapes (2,3) (2,)