Python Matrix und Einführung in NumPy

In diesem Artikel lernen wir Python-Matrizen mithilfe verschachtelter Listen und des NumPy-Pakets kennen.

Eine Matrix ist eine zweidimensionale Datenstruktur, in der Zahlen in Zeilen und Spalten angeordnet sind. Beispielsweise:

Diese Matrix ist eine 3x4-Matrix (ausgesprochen "drei mal vier"), da sie 3 Zeilen und 4 Spalten enthält.

Python Matrix

Python hat keinen eingebauten Typ für Matrizen. Wir können die Liste einer Liste jedoch als Matrix behandeln. Beispielsweise:

 A = ((1, 4, 5), (-5, 8, 9)) 

Wir können diese Liste einer Liste als Matrix mit 2 Zeilen und 3 Spalten behandeln.

Informieren Sie sich unbedingt über Python-Listen, bevor Sie mit diesem Artikel fortfahren.

Mal sehen, wie man mit einer verschachtelten Liste arbeitet.

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) print("A =", A) print("A(1) =", A(1)) # 2nd row print("A(1)(2) =", A(1)(2)) # 3rd element of 2nd row print("A(0)(-1) =", A(0)(-1)) # Last element of 1st Row column = (); # empty list for row in A: column.append(row(2)) print("3rd column =", column) 

Wenn wir das Programm ausführen, lautet die Ausgabe:

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) A (1) = (-5, 8, 9, 0) A (1) (2) = 9 A (0) (- 1) = 12 3. Spalte = (5, 9, 11) 

Hier sind einige weitere Beispiele für Python-Matrizen, die verschachtelte Listen verwenden.

  • Fügen Sie zwei Matrizen hinzu
  • Transponiere eine Matrix
  • Multiplizieren Sie zwei Matrizen

Die Verwendung verschachtelter Listen als Matrix funktioniert für einfache Rechenaufgaben. Es gibt jedoch eine bessere Möglichkeit, mit Matrizen in Python mithilfe des NumPy-Pakets zu arbeiten.

NumPy Array

NumPy ist ein Paket für wissenschaftliches Rechnen, das ein leistungsstarkes N-dimensionales Array-Objekt unterstützt. Bevor Sie NumPy verwenden können, müssen Sie es installieren. Für mehr Information,

  • Besuchen Sie: Wie installiere ich NumPy?
  • Wenn Sie unter Windows arbeiten, laden Sie die Anaconda-Distribution von Python herunter und installieren Sie sie. Es wird mit NumPy und anderen verschiedenen Paketen geliefert, die sich auf Datenwissenschaft und maschinelles Lernen beziehen.

Sobald NumPy installiert ist, können Sie es importieren und verwenden.

NumPy bietet ein mehrdimensionales Array von Zahlen (was eigentlich ein Objekt ist). Nehmen wir ein Beispiel:

 import numpy as np a = np.array((1, 2, 3)) print(a) # Output: (1, 2, 3) print(type(a)) # Output: 

Wie Sie sehen können, wird die Array-Klasse von NumPy aufgerufen ndarray.

Wie erstelle ich ein NumPy-Array?

Es gibt verschiedene Möglichkeiten, NumPy-Arrays zu erstellen.

1. Array von ganzen Zahlen, Gleitkommazahlen und komplexen Zahlen

 import numpy as np A = np.array(((1, 2, 3), (3, 4, 5))) print(A) A = np.array(((1.1, 2, 3), (3, 4, 5))) # Array of floats print(A) A = np.array(((1, 2, 3), (3, 4, 5)), dtype = complex) # Array of complex numbers print(A) 

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 ((1 2 3) (3 4 5)) ((1.1 2. 3.) (3. 4. 5.)) ((1. + 0.j 2. + 0.j 3. + 0.j) (3. + 0.j 4. + 0.j 5. + 0.j)) 

2. Array von Nullen und Einsen

 import numpy as np zeors_array = np.zeros( (2, 3) ) print(zeors_array) ''' Output: ((0. 0. 0.) (0. 0. 0.)) ''' ones_array = np.ones( (1, 5), dtype=np.int32 ) // specifying dtype print(ones_array) # Output: ((1 1 1 1 1)) 

Hier haben wir dtype32 Bit (4 Bytes) angegeben. Daher kann dieses Array Werte von bis annehmen .-2-312-31-1

3. Verwenden Sie arange () und shape ()

 import numpy as np A = np.arange(4) print('A =', A) B = np.arange(12).reshape(2, 6) print('B =', B) ''' Output: A = (0 1 2 3) B = (( 0 1 2 3 4 5) ( 6 7 8 9 10 11)) ''' 

Erfahren Sie mehr über andere Möglichkeiten zum Erstellen eines NumPy-Arrays.

Matrixoperationen

Oben haben wir Ihnen 3 Beispiele gegeben: Addition von zwei Matrizen, Multiplikation von zwei Matrizen und Transponierung einer Matrix. Wir haben zuvor verschachtelte Listen verwendet, um diese Programme zu schreiben. Mal sehen, wie wir dieselbe Aufgabe mit dem NumPy-Array ausführen können.

Addition von zwei Matrizen

Wir verwenden den +Operator, um entsprechende Elemente von zwei NumPy-Matrizen hinzuzufügen.

 import numpy as np A = np.array(((2, 4), (5, -6))) B = np.array(((9, -3), (3, 6))) C = A + B # element wise addition print(C) ''' Output: ((11 1) ( 8 0)) '''

Multiplikation zweier Matrizen

Um zwei Matrizen zu multiplizieren, verwenden wir die dot()Methode. Erfahren Sie mehr darüber, wie numpy.dot funktioniert.

Hinweis: * Wird für die Array-Multiplikation (Multiplikation der entsprechenden Elemente zweier Arrays) und nicht für die Matrix-Multiplikation verwendet.

 import numpy as np A = np.array(((3, 6, 7), (5, -3, 0))) B = np.array(((1, 1), (2, 1), (3, -3))) C = A.dot(B) print(C) ''' Output: (( 36 -12) ( -1 2)) ''' 

Transponieren einer Matrix

Wir verwenden numpy.transpose, um die Transponierung einer Matrix zu berechnen.

 import numpy as np A = np.array(((1, 1), (2, 1), (3, -3))) print(A.transpose()) ''' Output: (( 1 2 3) ( 1 1 -3)) ''' 

Wie Sie sehen, hat NumPy unsere Aufgabe erheblich erleichtert.

Greifen Sie auf Matrixelemente, Zeilen und Spalten zu

Access matrix elements

Similar like lists, we can access matrix elements using index. Let's start with a one-dimensional NumPy array.

 import numpy as np A = np.array((2, 4, 6, 8, 10)) print("A(0) =", A(0)) # First element print("A(2) =", A(2)) # Third element print("A(-1) =", A(-1)) # Last element 

When you run the program, the output will be:

 A(0) = 2 A(2) = 6 A(-1) = 10 

Now, let's see how we can access elements of a two-dimensional array (which is basically a matrix).

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) # First element of first row print("A(0)(0) =", A(0)(0)) # Third element of second row print("A(1)(2) =", A(1)(2)) # Last element of last row print("A(-1)(-1) =", A(-1)(-1)) 

When we run the program, the output will be:

 A(0)(0) = 1 A(1)(2) = 9 A(-1)(-1) = 19 

Access rows of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(0) =", A(0)) # First Row print("A(2) =", A(2)) # Third Row print("A(-1) =", A(-1)) # Last Row (3rd row in this case)

When we run the program, the output will be:

 A(0) = (1, 4, 5, 12) A(2) = (-6, 7, 11, 19) A(-1) = (-6, 7, 11, 19) 

Access columns of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(:,0) =",A(:,0)) # First Column print("A(:,3) =", A(:,3)) # Fourth Column print("A(:,-1) =", A(:,-1)) # Last Column (4th column in this case) 

When we run the program, the output will be:

 A(:,0) = ( 1 -5 -6) A(:,3) = (12 0 19) A(:,-1) = (12 0 19) 

If you don't know how this above code works, read slicing of a matrix section of this article.

Slicing of a Matrix

Slicing of a one-dimensional NumPy array is similar to a list. If you don't know how slicing for a list works, visit Understanding Python's slice notation.

Nehmen wir ein Beispiel:

 import numpy as np letters = np.array((1, 3, 5, 7, 9, 7, 5)) # 3rd to 5th elements print(letters(2:5)) # Output: (5, 7, 9) # 1st to 4th elements print(letters(:-5)) # Output: (1, 3) # 6th to last elements print(letters(5:)) # Output:(7, 5) # 1st to last elements print(letters(:)) # Output:(1, 3, 5, 7, 9, 7, 5) # reversing a list print(letters(::-1)) # Output:(5, 7, 9, 7, 5, 3, 1) 

Nun wollen wir sehen, wie wir eine Matrix schneiden können.

 import numpy as np A = np.array(((1, 4, 5, 12, 14), (-5, 8, 9, 0, 17), (-6, 7, 11, 19, 21))) print(A(:2, :4)) # two rows, four columns ''' Output: (( 1 4 5 12) (-5 8 9 0)) ''' print(A(:1,)) # first row, all columns ''' Output: (( 1 4 5 12 14)) ''' print(A(:,2)) # all rows, second column ''' Output: ( 5 9 11) ''' print(A(:, 2:5)) # all rows, third to the fifth column '''Output: (( 5 12 14) ( 9 0 17) (11 19 21)) ''' 

Wie Sie sehen können, erleichtert die Verwendung von NumPy (anstelle von verschachtelten Listen) die Arbeit mit Matrizen erheblich, und wir haben noch nicht einmal die Grundlagen zerkratzt. Wir empfehlen Ihnen, das NumPy-Paket im Detail zu untersuchen, insbesondere wenn Sie versuchen, Python für Data Science / Analytics zu verwenden.

NumPy-Ressourcen, die Sie möglicherweise hilfreich finden:

  • NumPy Tutorial
  • NumPy-Referenz

Interessante Beiträge...