Wir haben ** zweidimensionale Array-Operationen (Initialisierung, Referenz, Extraktion, Berechnung, Translokation) ** zusammengefasst, die beim Erlernen von Python unvermeidlich sind.
(* Das numpy-Modul muss installiert sein. Für Mac kann es mit pip3 install numpy
installiert werden. Informationen zu Windows finden Sie hier unter Python3, numpy, pandas, matplotlib usw. unter Windows installieren)
Schreiben Sie den Code und das Ausgabeergebnis grundsätzlich mit dem folgenden Code.
ex.py
code = 'Code'
#Ausgabeergebnis
Beispielsweise wird ein zweidimensionales Array von 2 Zeilen und 3 Spalten "[[0, 0, 0], [0, 0, 0]]" durch die folgenden zwei Methoden erzeugt.
ex1.py
a = [[0 for j in range(3)] for i in range(2)]
print(a)
# [[0, 0, 0], [0, 0, 0]]
a[0][0] = 1
print(a)
# [[1, 0, 0], [0, 0, 0]]
ex2.py
import numpy as np
a = np.zeros((2, 3))
print(a)
# [[0, 0, 0],
# [0, 0, 0]]
print(a)
a[0][0] = 1
# [[1, 0, 0],
# [0, 0, 0]]
Beispiel: Wenn Sie einem 2-mal-3-zweidimensionalen Array Zahlen von 0 bis 5 zuweisen ** (* -1 wird verwendet, um die Größe dieser Dimension automatisch aus anderen Dimensionen zu berechnen.) **
ex.py
import numpy as np
#0~Generieren Sie automatisch Sequenzen bis zu 5
a = np.arange(6)
print(a)
# [0 1 2 3 4 5]
#Konvertieren Sie ein eindimensionales Array a in ein zweidimensionales Array
print(a.reshape(2, 3))
# [[0 1 2]
# [3 4 5]]
print(a.reshape(-1, 3))
# [[0 1 2]
# [3 4 5]]
print(a.reshape(2, -1))
# [[0 1 2]
# [3 4 5]]
Geben Sie für den Zugriff durch Angabe des Bereichs "X [Start: Ende: Schritt]" an. Beachten Sie, dass das Ende derzeit nicht enthalten ist. (Ende ist in Matlab enthalten.) Wenn Start weggelassen wird, ist es von Anfang an, wenn Ende weggelassen wird, ist es das Ende, und wenn Schritt weggelassen wird, ist Schritt 1.
Geben Sie bei mehreren Dimensionen jede an, indem Sie sie durch ein Komma (,) trennen. Die Spezifikationsmethode ist dieselbe wie für eindimensional.
ex.py
import numpy as np
a = np.arange(12).reshape(3, 4)
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
#a[Linienbereich,Spaltenbereich]
print(a[:3, 1:3])
# [[1 2]
# [5 6]
# [9, 10]
print(a[:, 1])
# [[1]
# [5]
# [9]]
ex.py
import numpy as np
a = np.arange(12).reshape(3, 4)
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
#Der Teil, der die Bedingung erfüllt, ist True,Ein numpy-Array wird zurückgegeben, wobei der nicht erfüllte Teil False ist.
print(a > 5)
# [[False False False False]
# [False False True True]
# [ True True True True]]
#Der Wert des Teils, das die Bedingung erfüllt, wird zurückgegeben.
print( a[a > 5] )
# [ 6 7 8 9 10 11]
Wenn das zweite Argument "Achse" angegeben wird, wird der Index mit dem Maximalwert entlang jeder Achse zurückgegeben. Wenn beispielsweise "Achse = 0" ist, wird die maximale Zeilennummer für jede Spalte zurückgegeben. Der Maximalwert jeder Spalte selbst kann durch Setzen von "axis = 0" in "np.max ()" erhalten werden. (Wenn Achse = 1 ist, wird die maximale Spaltennummer für jede Zeile zurückgegeben.)
ex.py
import numpy as np
a = np.array([[20, 50, 30], [60, 40, 10]])
print(a)
# [[20 50 30]
# [60 40 10]]
#axis=Bei 1 wird die maximale Spaltennummer für jede Spalte zurückgegeben.
print(np.argmax(a, axis=0))
# [1 0 0]
#Maximalwert pro Spalte
print(np.max(a, axis=0))
# [60 50 30]
#Ähnlich Achse=Bei 1 wird die maximale Spaltennummer für jede Zeile zurückgegeben.
print(np.argmax(a, axis=1))
# [1 0]
#Maximalwert pro Zeile
print(np.max(a, axis=1))
# [50 60]
Ebenso sind folgende Anwendungen möglich.
・ Numpy.sum ()
: Gesamt
・ Numpy.mean ()
: Durchschnitt
・ Numpy.min ()
: Minimum / numpy.max ()
: Maximum
・ Andere (numpy.std ()
: Standardabweichung / numpy.var ()
: Dispersion usw.)
Sie können die transponierte Matrix des ursprünglichen zweidimensionalen Arrays (Matrix) mit dem Attribut T
erhalten.
ex1.py
import numpy as np
import numpy as np
a = np.arange(6).reshape(2, 3)
print(a)
# [[0 1 2]
# [3 4 5]]
a_T = a.T
print(a_T)
# [[0 3]
# [1 4]
# [2 5]]
-Das T-Attribut gibt eine Ansicht (Referenz) des ursprünglichen Arrays zurück, und das Ändern eines Elements ändert das andere.
-Sie können mit np.shares_memory ()
überprüfen, ob zwei ndarray
s auf dieselben Speicherdaten verweisen (eine ist die andere Ansicht).
ex2.py
print(np.shares_memory(a, a_T))
# True
a_T[0, 1] = 100
print(a_T)
# [[ 0 100]
# [ 1 4]
# [ 2 5]]
print(a)
# [[ 0 1 2]
# [100 4 5]]
Wenn Sie sie als separate Daten verarbeiten möchten, erstellen Sie eine Kopie mit copy ().
ex3.py
a_T_copy = a.T.copy()
print(a_T_copy)
# [[0 3]
# [1 4]
# [2 5]]
print(np.shares_memory(a, a_T_copy))
# False
a_T_copy[0, 1] = 100
print(a_T_copy)
# [[ 0 100]
# [ 1 4]
# [ 2 5]]
print(a)
# [[0 1 2]
# [3 4 5]]
Ich wäre Ihnen dankbar, wenn Sie mir weitere gute Lösungen oder nützliche Informationen mitteilen könnten.