Aufgaben
Lösung zu Aufgabe 2.1
Um die Gleichung \[ \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{bmatrix} + \begin{bmatrix} 10 & 20 & 30 & 40 \end{bmatrix} = \begin{bmatrix} 11 & 22 & 33 & 44 \\ 15 & 26 & 37 & 48 \\ 19 & 30 & 41 & 52 \end{bmatrix} \] in Python abzubilden, erzeugen wir ein 3×4-Array und ein 1×3-Array:
>>> import numpy as np
>>> a = np.array([[ 1, 2, 3, 4],
... [ 5, 6, 7, 8],
... [ 9, 10, 11, 12]])
>>> b = np.array([[10, 20, 30, 40]])
>>> a + b
array([[11, 22, 33, 44],
[15, 26, 37, 48],
[19, 30, 41, 52]])
Man erhält das gleiche Ergebnis, wenn man das Array b durch ein 1-dimensionales Array ersetzt:
>>> import numpy as np
>>> a = np.array([[ 1, 2, 3, 4],
... [ 5, 6, 7, 8],
... [ 9, 10, 11, 12]])
>>> b = np.array([10, 20, 30, 40])
>>> a + b
array([[11, 22, 33, 44],
[15, 26, 37, 48],
[19, 30, 41, 52]])
Für die Gleichung \[ \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{bmatrix} + \begin{bmatrix} 10 \\ 20 \\ 30 \end{bmatrix} = \begin{bmatrix} 11 & 12 & 13 & 14 \\ 25 & 26 & 27 & 28 \\ 39 & 40 & 41 & 42 \end{bmatrix} \] müssen wir wieder ein 3×4-Array und ein 3×1-Array erzeugen:
>>> import numpy as np
>>> a = np.array([[ 1, 2, 3, 4],
... [ 5, 6, 7, 8],
... [ 9, 10, 11, 12]])
>>> b = np.array([[10], [20], [30]])
>>> a + b
array([[11, 12, 13, 14],
[25, 26, 27, 28],
[39, 40, 41, 42]])
Hier lässt sich das 3×1 Array aber nicht durch ein 1-dimensionales Array ersetzen: Der Versuch, ein 3×4-Array und ein 1-dimensionales Array mit 3 Elementen zu addieren \[ \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{bmatrix} + \begin{bmatrix} 10 & 20 & 30 \end{bmatrix} \] scheitert.
>>> import numpy as np
>>> a = np.array([[ 1, 2, 3, 4],
... [ 5, 6, 7, 8],
... [ 9, 10, 11, 12]])
>>> b = np.array([10, 20, 30])
>>> a + b
Traceback (most recent call last):
File "", line 1, in
ValueError: operands could not be broadcast together with shapes (3,4) (3,)
Für die Gleichung \[ \begin{bmatrix} 1 & 2 & 3 & 4 \end{bmatrix} + \begin{bmatrix} 10 \\ 20 \\ 30 \end{bmatrix} = \begin{bmatrix} 11 & 12 & 13 & 14 \\ 21 & 22 & 23 & 24 \\ 31 & 32 & 33 & 34 \end{bmatrix} \] kann man das erste Array als 1-dimensionales Array darstellen und für das zweite Array muss man ein 3×1-Array erzeugen:
>>> import numpy as np
>>> a = np.array([1, 2, 3, 4])
>>> b = np.array([[10], [20], [30]])
>>> a + b
array([[11, 12, 13, 14],
[21, 22, 23, 24],
[31, 32, 33, 34]])
Die Reihenfolge der Operanden ist in allen vier Fällen irrelevant.