[Python] Manipulieren Sie zweidimensionale Arrays nach Belieben. [Initialisierung / Referenz / Extraktion / Berechnung / Translokation]

Einführung

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

Listeninitialisierung

Beispielsweise wird ein zweidimensionales Array von 2 Zeilen und 3 Spalten "[[0, 0, 0], [0, 0, 0]]" durch die folgenden zwei Methoden erzeugt.

1. Erstellen Sie ein zweidimensionales Array mit der Listeneinschlussnotation

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]]

2. Erstellen Sie mit dem numpy-Modul ein zweidimensionales Array

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]]

Konvertieren Sie ein eindimensionales Array in ein zweidimensionales

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]]

Zugriff durch Angabe eines Bereichs

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]]

Extrahieren Sie Daten, die die Bedingungen erfüllen

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]

Finden Sie den Maximalwert für jede Spalte / Zeile

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.)

Translokation eines zweidimensionalen Arrays (Matrix)

T-Attribut (.T)

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 ndarrays 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]]

Schließlich

Ich wäre Ihnen dankbar, wenn Sie mir weitere gute Lösungen oder nützliche Informationen mitteilen könnten.

Recommended Posts

[Python] Manipulieren Sie zweidimensionale Arrays nach Belieben. [Initialisierung / Referenz / Extraktion / Berechnung / Translokation]
[Python] Numpy Referenz, Extraktion, Kombination