Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Implementierung von Matrixtransformationen in Python | Grundlagen der Linearen Algebra
Mathematik für Data Science

bookImplementierung von Matrixtransformationen in Python

Lösen eines linearen Gleichungssystems

Wir definieren ein Gleichungssystem:

2x+y=5xy=12x + y = 5 \\ x - y = 1

Dies wird umgeschrieben als:

123456789
import numpy as np A = np.array([[2, 1], # Coefficient matrix [1, -1]]) b = np.array([5, 1]) # Constants (RHS) x_solution = np.linalg.solve(A, b) print(x_solution)
copy

Dies bestimmt die Werte von xx und yy, die beide Gleichungen erfüllen.

Bedeutung: Das Lösen von Gleichungssystemen ist grundlegend in der Data Science – von der Anpassung linearer Modelle bis zur Lösung von Optimierungsrestriktionen.

Anwendung linearer Transformationen

Wir definieren einen Vektor:

v = np.array([[2], [3]])

Dann wenden wir zwei Transformationen an:

Skalierung

Wir strecken xx um den Faktor 2 und stauchen yy um den Faktor 0,5:

S = np.array([[2, 0],
              [0, 0.5]])

scaled_v = S @ v

Dies ergibt:

Sv=[2000.5][23]=[41.5]S \cdot v = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} 4 \\ 1.5 \end{bmatrix}

Rotation

Wir rotieren den Vektor um 90°90° gegen den Uhrzeigersinn mit der Rotationsmatrix:

theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta),  np.cos(theta)]])

rotated_v = R @ v

Dies ergibt:

Rv=[0110][23]=[32]R \cdot v = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} -3 \\ 2 \end{bmatrix}

Visualisierung der Transformationen

Mit matplotlib werden die einzelnen Vektoren vom Ursprung aus dargestellt und ihre Koordinaten beschriftet:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define original vector v = np.array([[2], [3]]) # Scaling S = np.array([[2, 0], [0, 0.5]]) scaled_v = S @ v # Rotation theta = np.pi / 2 R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]]) rotated_v = R @ v # Vizualization origin = np.zeros(2) fig, ax = plt.subplots(figsize=(6, 6)) # Plot original ax.quiver(*origin, v[0], v[1], angles='xy', scale_units='xy', scale=1, color='blue', label='Original') # Plot scaled ax.quiver(*origin, scaled_v[0], scaled_v[1], angles='xy', scale_units='xy', scale=1, color='green', label='Scaled') # Plot rotated ax.quiver(*origin, rotated_v[0], rotated_v[1], angles='xy', scale_units='xy', scale=1, color='red', label='Rotated') # Label vector tips ax.text(v[0][0]+0.2, v[1][0]+0.2, "(2, 3)", color='blue') ax.text(scaled_v[0][0]+0.2, scaled_v[1][0]+0.2, "(4, 1.5)", color='green') ax.text(rotated_v[0][0]-0.6, rotated_v[1][0]+0.2, "(-3, 2)", color='red') # Draw coordinate axes ax.annotate("", xy=(5, 0), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.annotate("", xy=(0, 5), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.text(5.2, 0, "X", fontsize=12) ax.text(0, 5.2, "Y", fontsize=12) ax.set_xlim(-5, 5) ax.set_ylim(-5, 5) ax.set_aspect('equal') ax.grid(True) ax.legend() plt.show()
copy

Warum das wichtig ist: Datenwissenschaftliche Arbeitsabläufe beinhalten häufig Transformationen, zum Beispiel:

  • Hauptkomponentenanalyse – rotiert Daten;
  • Merkmalsnormalisierung – skaliert Achsen;
  • Dimensionsreduktion – Projektionen.

Durch die Visualisierung von Vektoren und deren Transformationen wird deutlich, wie Matrizen Daten im Raum tatsächlich verschieben und umformen.

question mark

Was ist die Ausgabe dieser Operation?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 1.96

bookImplementierung von Matrixtransformationen in Python

Swipe um das Menü anzuzeigen

Lösen eines linearen Gleichungssystems

Wir definieren ein Gleichungssystem:

2x+y=5xy=12x + y = 5 \\ x - y = 1

Dies wird umgeschrieben als:

123456789
import numpy as np A = np.array([[2, 1], # Coefficient matrix [1, -1]]) b = np.array([5, 1]) # Constants (RHS) x_solution = np.linalg.solve(A, b) print(x_solution)
copy

Dies bestimmt die Werte von xx und yy, die beide Gleichungen erfüllen.

Bedeutung: Das Lösen von Gleichungssystemen ist grundlegend in der Data Science – von der Anpassung linearer Modelle bis zur Lösung von Optimierungsrestriktionen.

Anwendung linearer Transformationen

Wir definieren einen Vektor:

v = np.array([[2], [3]])

Dann wenden wir zwei Transformationen an:

Skalierung

Wir strecken xx um den Faktor 2 und stauchen yy um den Faktor 0,5:

S = np.array([[2, 0],
              [0, 0.5]])

scaled_v = S @ v

Dies ergibt:

Sv=[2000.5][23]=[41.5]S \cdot v = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} 4 \\ 1.5 \end{bmatrix}

Rotation

Wir rotieren den Vektor um 90°90° gegen den Uhrzeigersinn mit der Rotationsmatrix:

theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta),  np.cos(theta)]])

rotated_v = R @ v

Dies ergibt:

Rv=[0110][23]=[32]R \cdot v = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} -3 \\ 2 \end{bmatrix}

Visualisierung der Transformationen

Mit matplotlib werden die einzelnen Vektoren vom Ursprung aus dargestellt und ihre Koordinaten beschriftet:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define original vector v = np.array([[2], [3]]) # Scaling S = np.array([[2, 0], [0, 0.5]]) scaled_v = S @ v # Rotation theta = np.pi / 2 R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]]) rotated_v = R @ v # Vizualization origin = np.zeros(2) fig, ax = plt.subplots(figsize=(6, 6)) # Plot original ax.quiver(*origin, v[0], v[1], angles='xy', scale_units='xy', scale=1, color='blue', label='Original') # Plot scaled ax.quiver(*origin, scaled_v[0], scaled_v[1], angles='xy', scale_units='xy', scale=1, color='green', label='Scaled') # Plot rotated ax.quiver(*origin, rotated_v[0], rotated_v[1], angles='xy', scale_units='xy', scale=1, color='red', label='Rotated') # Label vector tips ax.text(v[0][0]+0.2, v[1][0]+0.2, "(2, 3)", color='blue') ax.text(scaled_v[0][0]+0.2, scaled_v[1][0]+0.2, "(4, 1.5)", color='green') ax.text(rotated_v[0][0]-0.6, rotated_v[1][0]+0.2, "(-3, 2)", color='red') # Draw coordinate axes ax.annotate("", xy=(5, 0), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.annotate("", xy=(0, 5), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.text(5.2, 0, "X", fontsize=12) ax.text(0, 5.2, "Y", fontsize=12) ax.set_xlim(-5, 5) ax.set_ylim(-5, 5) ax.set_aspect('equal') ax.grid(True) ax.legend() plt.show()
copy

Warum das wichtig ist: Datenwissenschaftliche Arbeitsabläufe beinhalten häufig Transformationen, zum Beispiel:

  • Hauptkomponentenanalyse – rotiert Daten;
  • Merkmalsnormalisierung – skaliert Achsen;
  • Dimensionsreduktion – Projektionen.

Durch die Visualisierung von Vektoren und deren Transformationen wird deutlich, wie Matrizen Daten im Raum tatsächlich verschieben und umformen.

question mark

Was ist die Ausgabe dieser Operation?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6
some-alt