Broadcasting schlägt fehl, wenn die Formen der Arrays gemäß den Regeln nicht kompatibel sind. Dies führt zu einem ValueError. Zu verstehen, wann dies geschieht, ist entscheidend für die Fehlersuche.
Versuchen wir eine Operation mit inkompatiblen Formen. Hier versuchen wir, ein Array der Form (2, 3) mit einem Array der Form (2,) zu addieren. NumPy vergleicht die nachgestellten Dimensionen (3 und 2), stellt fest, dass sie nicht gleich sind und keine davon 1 ist. Dies führt zu einem Fehler.
Ändern Sie Ihre Datei broadcasting.py so, dass sie den folgenden Code enthält:
import numpy as np
## Erstelle ein 2D-Array (Form: 2, 3)
a = np.array([[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0]])
## Erstelle ein inkompatibles 1D-Array (Form: 2,)
b = np.array([1.0, 2.0])
print("Array 'a' (Form {}):\n{}".format(a.shape, a))
print("Array 'b' (Form {}): {}".format(b.shape, b))
## Dies löst einen ValueError aus
try:
result = a + b
except ValueError as e:
print("\nError:", e)
Führen Sie das Skript vom Terminal aus:
python broadcasting.py
Wie erwartet fängt das Programm einen ValueError ab und gibt eine Fehlermeldung aus, die erklärt, dass die Formen nicht übereinstimmen. Dies ist das korrekte und erwartete Verhalten für inkompatible Formen.
Array 'a' (Form (2, 3)):
[[1. 2. 3.]
[4. 5. 6.]]
Array 'b' (Form (2,)): [1. 2.]
Error: operands could not be broadcast together with shapes (2,3) (2,)