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.