So führen Sie Matrixoperationen mit NumPy durchSo führen Sie Matrixoperationen mit NumPy durch
Foto von Vlado Paunovic

NumPy ist eine leistungsstarke Python-Bibliothek, die eine große Sammlung mathematischer Funktionen enthält und die Erstellung von Matrizen und mehrdimensionalen Arrays unterstützt, auf die diese mathematischen Funktionen angewendet werden können.

In diesem kurzen Tutorial lernen Sie, wie Sie einige der grundlegendsten Matrixoperationen mit NumPy durchführen.

Matrizen und Arrays in NumPy

In NumPy wird eine Matrix als spezialisiertes Array definiert, das streng zweidimensional ist und seine Zweidimensionalität nach der Anwendung mathematischer Operationen beibehält. Eine Matrix dieses Typs kann mit dem np.matrix Klasse, jedoch empfiehlt NumPy die Verwendung dieser Klasse nicht mehr, da sie in Zukunft möglicherweise entfernt wird. Die von NumPy empfohlene Various ist die Verwendung des N-dimensionalen Array-Typs, ndarray.

Der Hauptunterschied zwischen einem Ndarray und einer Matrix in NumPy besteht darin, dass ersteres jede beliebige Dimensionalität haben kann und seine Verwendung nicht auf zweidimensionale Operationen beschränkt ist.

Daher konzentrieren wir uns in diesem Tutorial auf die Implementierung mehrerer grundlegender Matrixoperationen auf zweidimensionalen Arrays, die mit erstellt wurden np.ndarray

Erstellen von NumPy-Arrays

Lassen Sie uns zunächst das NumPy-Paket importieren und dann zwei zweidimensionale Arrays erstellen, die jeweils aus zwei Zeilen und drei Spalten bestehen. Diese Arrays werden in den folgenden Beispielen dieses Tutorials verwendet:

# Import NumPy package deal
import numpy as np

# Create arrays
a1 = np.array(((0, 1, 0), (2, 3, 2)))
a2 = np.array(((3, 4, 3), (5, 6, 5)))

Der form Attribut ermöglicht uns, die Dimensionen des Arrays zu bestätigen:

# Print one of many arrays
print('Array 1:', 'n', a1, 'n Form: n’, a1.form)

Ausgabe:

Array 1: 
((0 1 0)
(2 3 2))

Form: (2, 3)

Grundlegende Array-Operationen

NumPy bietet eigene Funktionen zur elementweisen Addition, Subtraktion, Division und Multiplikation von Arrays. Darüber hinaus nutzt Numpy auch die arithmetischen Operatoren von Python, indem es deren Funktionalität erweitert, um elementweise Array-Operationen durchzuführen.

Beginnen wir mit der elementweisen Addition zwischen den Arrays a1 Und a2 als Beispiel.

Die elementweise Addition zweier Arrays kann durch die Verwendung von np.add Funktion oder die überlastete + Operator:

# Utilizing np.add
func_add = np.add(a1, a2)

# Utilizing the + operator
op_add = a1 + a2

Durch Ausdrucken der Ergebnisse kann bestätigt werden, dass beide die gleiche Ausgabe erzeugen:

# Print outcomes
print('Perform: n', func_add, 'nn', 'Operator: n', op_add)

Ausgabe:

Perform: 
((3 5 3)
(7 9 7))

Operator: 
((3 5 3)
(7 9 7))

Wenn wir jedoch die Zeit messen müssten, könnten wir einen kleinen Unterschied erkennen:

import numpy as np
import timeit

def func():

a1 = np.array(((0, 1, 0), (2, 3, 2)))
a2 = np.array(((3, 4, 3), (5, 6, 5)))
np.add(a1, a2)

def op():

a1 = np.array(((0, 1, 0), (2, 3, 2)))
a2 = np.array(((3, 4, 3), (5, 6, 5)))
a1 + a2

# Timing the capabilities over 100000 iterations
func_time = timeit.timeit(func, quantity=100000)
op_time = timeit.timeit(op, quantity=100000)

# Print timing outcomes
print('Perform:', func_time, 'n', 'Operator:', op_time)

Ausgabe:

Perform: 0.2588757239282131 
Operator: 0.24321464297827333

Hier kann man sehen, dass die NumPy np.add Funktion ist etwas langsamer als die + Operator. Dies liegt hauptsächlich daran, dass die Funktion add eine Typprüfung einführt, um alle array_like Eingaben (wie Pay attention) in Arrays, bevor die Additionsoperation ausgeführt wird. Dies führt wiederum zu einem zusätzlichen Rechenaufwand gegenüber der + Operator.

Eine solche Maßnahme macht jedoch auch die np.add Funktion weniger fehleranfällig. Zum Beispiel die Anwendung np.add für Eingänge vom Typ record funktioniert immer noch (zB np.add((1, 1), (2, 2))), während die Anwendung der + Operator führt zur Listenverkettung.

Ähnlich verhält es sich bei der elementweisen Subtraktion (mit np.subtract oder -), Division (mit np.divide oder /) und Multiplikation (mit np.multiply oder *) führen die NumPy-Funktionen eine Typprüfung durch, was zu einem geringen Rechenaufwand führt.

Zu den weiteren Operationen, die nützlich sein können, gehören das Transponieren und Multiplizieren von Arrays.

Die Matrixtransposition führt zu einer orthogonalen Rotation der Matrix und kann erreicht werden durch np.transpose Funktion (die eine Typprüfung beinhaltet) oder die .T Attribut:

# Utilizing np.transpose
func_a1_T = np.transpose(a1)

# Utilizing the .T attribute
att_a1_T = a1.T

Die Matrixmultiplikation kann durchgeführt werden mit dem np.dot Funktion oder die @ Operator (letzterer implementiert den np.matmul Funktion ab Python 3.5):

# Utilizing np.dot
func_dot = np.dot(func_a1_T, a2)

# Utilizing the @ operator
op_dot = func_a1_T @ a2

Bei der Arbeit mit 2-dimensionalen Arrays np.dot Und np.matmul Die Ausführung ist identisch und beide umfassen eine Typprüfung.

Zusätzliche Ressourcen

Stefania CristinaPhD, ist Dozentin am Institut für System- und Steuerungstechnik der Universität Malta. Ihre Forschungsinteressen liegen in den Bereichen Laptop Imaginative and prescient und maschinelles Lernen.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert