438 Stimmen

Was sind die Unterschiede zwischen Numpy-Arrays und Matrizen? Welche sollte ich verwenden?

Welches sind die Vor- und Nachteile der beiden?

Nach dem, was ich gesehen habe, kann einer der beiden als Ersatz für den anderen funktionieren, wenn es nötig ist, sollte ich mir also die Mühe machen, beide zu verwenden, oder sollte ich bei nur einem von ihnen bleiben?

Wird der Stil des Programms meine Wahl beeinflussen? Ich mache etwas maschinelles Lernen mit Numpy, also gibt es tatsächlich viele Matrizen, aber auch viele Vektoren (Arrays).

2voto

rubengavidia0x Punkte 283

Matrixoperationen mit Numpy-Arrays:

Ich würde diese Antwort gerne weiter aktualisieren über Matrix-Operationen mit Numpy-Arrays aktualisieren, falls einige Benutzer auf der Suche nach Informationen über Matrizen und Numpy sind.

Wie die akzeptierte Antwort und die numpy-ref.pdf sagten:

Die Klasse numpy.matrix wird in Zukunft entfernt werden.

Jetzt müssen also Matrix-Algebra-Operationen durchgeführt werden mit Numpy-Arrays durchgeführt werden.

a = np.array([[1,3],[-2,4]])
b = np.array([[3,-2],[5,6]]) 

Matrix-Multiplikation (Infix-Matrix-Multiplikation)

a@b
array([[18, 16],
       [14, 28]])

Transponieren:

ab = a@b
ab.T       
array([[18, 14],
       [16, 28]])

Inverse einer Matrix:

np.linalg.inv(ab)
array([[ 0.1       , -0.05714286],
       [-0.05      ,  0.06428571]])      

ab_i=np.linalg.inv(ab) 
ab@ab_i  # proof of inverse
array([[1., 0.],
       [0., 1.]]) # identity matrix 

Determinante einer Matrix.

np.linalg.det(ab)
279.9999999999999

Lösen eines linearen Systems:

1.   x + y = 3,
    x + 2y = -8
b = np.array([3,-8])
a = np.array([[1,1], [1,2]])
x = np.linalg.solve(a,b)
x
array([ 14., -11.])
# Solution x=14, y=-11

Eigenwerte und Eigenvektoren:

a = np.array([[10,-18], [6,-11]])
np.linalg.eig(a)
(array([ 1., -2.]), array([[0.89442719, 0.83205029],
        [0.4472136 , 0.5547002 ]])

1voto

Meowf Punkte 45

Ein Vorteil der Verwendung von Matrizen ist die einfachere Instanziierung durch Text anstelle von verschachtelten eckigen Klammern.

Mit Matrizen können Sie Folgendes tun

np.matrix("1, 1+1j, 0; 0, 1j, 0; 0, 0, 1")

und erhalten direkt die gewünschte Ausgabe:

matrix([[1.+0.j, 1.+1.j, 0.+0.j],
        [0.+0.j, 0.+1.j, 0.+0.j],
        [0.+0.j, 0.+0.j, 1.+0.j]])

Wenn Sie Arrays verwenden, funktioniert dies nicht:

np.array("1, 1+1j, 0; 0, 1j, 0; 0, 0, 1")

Ausgabe:

array('1, 1+1j, 0; 0, 1j, 0; 0, 0, 1', dtype='<U29')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X