[PYTHON] NumPy-Array-Operation (3)

Fortsetzung von Letztes Mal wird die Geschichte von NumPy ohne sexuelle Disziplin fortgesetzt.

Warum NumPy überhaupt verwenden?

Es heißt Datenanalyse, aber was sind Daten überhaupt? Daten sind eine Sammlung von Zahlen. Wenn wir uns umschauen, ist die Gesamtzahl der Bücher auf dem Schreibtisch, der Teller auf dem Tisch und der Äpfel, die im Yahyakuya aufgereiht sind, begrenzt. Zum Beispiel gibt es 14 Bücher, 22 Teller, insgesamt 56 Äpfel und so weiter.

Solch eine endliche und kleine Anzahl von Dingen kann bei Bedarf jederzeit zu einem kombiniert werden. Die Sammlung von Dingen in der Welt, die wir leben und erleben, besteht somit aus einer endlichen Anzahl von Dingen.

Eine Sammlung von Dingen ist eine Sammlung. Wenn die Gesamtzahl der Objekte, an die Sie denken, gering ist, unterscheiden sich die Wahrnehmung jedes Objekts und die Wahrnehmung des gesamten Satzes nicht so stark. Wenn jedoch die Anzahl der in einem Konzept enthaltenen Objekte zunimmt, wird die Art und Weise, das Ganze als eins zu erkennen, anders. In Bezug auf natürliche Zahlen gibt es beispielsweise einen Unterschied zwischen dem Erkennen jeder natürlichen Zahl und dem Erkennen der gesamten natürlichen Zahl als einzelnes Symbol. Die Art und Weise, dieses Ganze als eins zu erkennen, ist die Grundlage der Mengenlehre.

Betrachten wir nun die Mengenlehre und die lineare Algebra. Der Vektorraum in der linearen Algebra bezieht sich auf die mathematische Struktur einer Sammlung von Elementen, die als Vektor bezeichnet wird. Grob gesagt ist lineare Algebra die Mathematik von Vektoren und Matrizen, aber es ist wichtig, eine dedizierte Bibliothek zu unterstützen, um diese Vektoren, Matrizen und mehrdimensionalen Arrays, die aus ihnen bestehen, zu handhaben. NumPy zu beherrschen bedeutet daher auch, die Struktur und Manipulation der tatsächlich zu analysierenden Daten zu beherrschen.

Speichern Sie das ndarray-Objekt

Die Funktionen np.save und np.load können ndarray-Objekte als Dateien eingeben und ausgeben. Außerdem erstellen np.savetxt und np.loadtxt die Datei im Textformat.

Wenn Sie Pandas verwenden können, können Sie auch die Funktionen read_csv, read_table, write_csv und write_table höherer Ordnung verwenden.

arr = np.arange(10)
#=> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

np.save('hoge', arr) #Speichern Sie mit Hoge, Erweiterung.npy
arr2 = np.load('hoge.npy') #Laden Sie das gespeicherte Objekt
arr2
#=> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) #Erfolgreiche Restaurierung

np.savetxt('fuga.txt', arr) #Als Text speichern
arr3 = np.loadtxt('fuga.txt') #Lesen Sie aus dem Text
arr3
#=> array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.])

Matrixberechnung

Wie oben erwähnt, ist die Berechnung der linearen Algebra eine wichtige Position bei Array-Berechnungen wie NumPy.

Die Umformungsfunktion ist eine sehr nützliche Funktion beim Generieren eines mehrdimensionalen Arrays.

x = np.array([1,2,3,4,5,6]).reshape([2,3])
#=> array([[1, 2, 3],
#          [4, 5, 6]])

y = np.array([6,23,-1,7,8,9]).reshape([3,2])
#=> array([[ 6, 23],
#          [-1,  7],
#          [ 8,  9]])

x.dot(y) #Finde das innere Produkt
#=> array([[ 28,  64],
#          [ 67, 181]])
from numpy.linalg import inv, qr, pinv, eig

x = np.random.randn(5,5)
x.T #Übersetzen
#=> array([[ 0.1797343 , -1.48685211,  1.89995885, -1.48818535,  0.22707072],
#          [ 0.16362348,  0.73820851,  0.6830228 , -0.28744869,  1.60110706],
#          [-0.25212006, -0.75832623,  1.08510935,  0.36069392, -0.25172285],
#          [-1.23742215, -0.27616976,  1.09778477, -0.79290683,  1.88819678],
#          [ 1.25424329, -0.44571606, -0.37970879,  0.25329534, -0.0571783 ]])

mat = x.T.dot(x)
mat #Invertieren und das innere Produkt finden
#=> array([[ 8.119134  ,  1.02085855,  2.54992915,  3.88270879, -0.22322061],
#          [ 1.02085855,  3.68441518, -0.36661744,  3.59459509, -0.54751549],
#          [ 2.54992915, -0.36661744,  2.00954999,  0.95132328, -0.28449209],
#          [ 3.88270879,  3.59459509,  0.95132328,  7.00660306, -2.15457716],
#          [-0.22322061, -0.54751549, -0.28449209, -2.15457716,  1.98339569]])

inv(mat) #Gibt die Umkehrung einer quadratischen Matrix zurück
#=> array([[ 0.34294894,  0.13024165, -0.30841121, -0.30883099, -0.30517266],
#          [ 0.13024165,  0.87379103,  0.25904943, -0.69902729, -0.46633355],
#          [-0.30841121,  0.25904943,  0.98083558, -0.06094767,  0.11128055],
#          [-0.30883099, -0.69902729, -0.06094767,  0.91304207,  0.75537864],
#          [-0.30517266, -0.46633355,  0.11128055,  0.75537864,  1.17764414]])

q, r = qr(mat) #QR-Demontage
q
#=> array([[-0.86261627,  0.28238894,  0.35807769,  0.08420784, -0.20208678],
#          [-0.10846098, -0.74407004,  0.01429817,  0.58226198, -0.30880827],
#          [-0.27091687,  0.2393467 , -0.87410947,  0.31594231,  0.0736905 ],
#          [-0.41251786, -0.54595751, -0.16208726, -0.50524429,  0.50021529],
#          [ 0.02371604,  0.10611234,  0.28501978,  0.54661567,  0.7798415 ]])

r
#=> array([[-9.41221986, -2.67672118, -3.10345255, -6.93833754,  1.26485136],
#          [ 0.        , -4.56152677,  0.92426978, -5.40443517,  1.66303293],
#          [ 0.        , -0.        , -1.08401917, -1.13963141,  1.07545497],
#          [ 0.        ,  0.        ,  0.        , -1.997258  ,  1.7452655 ],
#          [-0.        , -0.        , -0.        , -0.        ,  0.66220471]])

pinv(mat) #Gibt eine Pseudo-Inverse von Moore Penrose zurück
#=> array([[ 0.34294894,  0.13024165, -0.30841121, -0.30883099, -0.30517266],
#          [ 0.13024165,  0.87379103,  0.25904943, -0.69902729, -0.46633355],
#          [-0.30841121,  0.25904943,  0.98083558, -0.06094767,  0.11128055],
#          [-0.30883099, -0.69902729, -0.06094767,  0.91304207,  0.75537864],
#          [-0.30517266, -0.46633355,  0.11128055,  0.75537864,  1.17764414]])

np.trace(mat) #Gibt die Summe der diagonalen Komponenten zurück
#=> 22.80309791710043

eig(mat) #Gibt Eigenwerte und Eigenvektoren für eine quadratische Matrix zurück
#=> (array([ 13.3600683 ,   5.95602662,   2.24791381,   0.81881059,   0.4202786 ]),
#    array([[-0.64467006, -0.63086541,  0.20659265,  0.31642236, -0.20881982],
#          [-0.31183983,  0.5014887 ,  0.55973159, -0.32086736, -0.48477798],
#          [-0.19333292, -0.33433927, -0.32170008, -0.86424035, -0.02091191],
#          [-0.65225524,  0.42536152, -0.20774674,  0.04440243,  0.59033922],
#          [ 0.15601897, -0.24042203,  0.70524491, -0.21917587,  0.61028427]]))

Zusammenfassung

Dieses Mal erklärte ich die häufig vorkommenden Funktionen der linearen Algebra, die besonders wichtig sind. Dies ist der grundlegende Teil der wissenschaftlichen Berechnung, also lasst es uns gut studieren.

Recommended Posts

NumPy-Array-Operation (3)
NumPy-Array-Operation (1)
Berechnung des Python-Numpy-Arrays
Erstellen Sie ein Python-Numpy-Array
Mehrdimensionale Array-Berechnung ohne Numpy
Über Numpy Array und Asarray
Indexierter Zugriff auf das Python-Numpy-Array
Mehrdimensionale Array-Berechnung ohne Numpy Teil 2
Python-Anwendung: Numpy Teil 3: Double Array
Extrahieren Sie mehrere Elemente mit dem Numpy-Array
Invertiere numpy Boolean Array in Tilda
Numpy-Übung 1
Numpy [Basic]
numpy Teil 1
NumPy-Grundlagen
Numpy Memorandum _ Matrix
numpy tipps
Python / numpy> list (numpy array) Datei speichern / laden
Über Numpy
NumPy-Achse
Verwenden Sie Numpy
numpy Teil 2
Unterschied zwischen Numpy 1D Array [x] und 2D Array [x, 1]
Fügen Sie einem leeren Array mit numpy Zeilen hinzu
Die Form der eindimensionalen Anordnung von Numpy war kompliziert
[Python numpy] Geben Sie den Index des Arrays dynamisch an
Berechnungsgeschwindigkeit der Indizierung für ein numpy quadratisches Array