Beim Addieren von zwei NumPy-Arrays müssen die Formen (Shapes) der Arrays kompatibel sein. Das bedeutet, dass die Arrays die gleiche Form haben müssen oder mindestens eine der Dimensionen die Größe 1 haben muss (eine Singleton-Dimension), damit sie auf die Form des anderen Arrays erweitert (broadcast) werden kann.
Wenn die Arrays die gleiche Form haben, können Sie einfach den +
-Operator verwenden, um eine elementweise Addition durchzuführen:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
result = arr1 + arr2
print(result)
## Output: [[ 6 8]
## [10 12]]
Wenn die Arrays unterschiedliche Formen haben, wird NumPy versuchen, die Arrays auf eine gemeinsame Form zu erweitern, bevor die Addition durchgeführt wird. Broadcasting ist eine leistungsstarke Funktion, die es Ihnen ermöglicht, Operationen auf Arrays unterschiedlicher Formen durchzuführen.
import numpy as np
## Broadcasting a 1D array with a 2D array
arr1d = np.array([1, 2, 3])
arr2d = np.array([[4, 5, 6], [7, 8, 9]])
result = arr1d + arr2d
print(result)
## Output: [[ 5 7 9]
## [ 8 10 12]]
## Broadcasting a scalar with a 2D array
scalar = 10
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
result = scalar + arr2d
print(result)
## Output: [[11 12 13]
## [14 15 16]]
In den obigen Beispielen erweitert NumPy automatisch das 1D-Array und den Skalar, um der Form des 2D-Arrays zu entsprechen, so dass die Addition durchgeführt werden kann.
Wenn die Arrays Formen haben, die nicht auf eine gemeinsame Form erweitert werden können, wird NumPy eine ValueError
-Ausnahme auslösen:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6, 7], [8, 9, 10]])
result = arr1 + arr2
## ValueError: operands could not be broadcast together with shapes (2,2) (2,3)
In solchen Fällen müssen Sie möglicherweise eines oder beide Arrays umformen oder transponieren, um ihre Formen kompatibel zu machen, bevor Sie die Addition durchführen.