Fortsetzung von Letztes Mal wird die Geschichte von NumPy ohne sexuelle Disziplin fortgesetzt.
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.
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.])
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]]))
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