Nous avons résumé ** les opérations de tableau à deux dimensions (initialisation, référence, extraction, calcul, translocation) ** qui sont inévitables lors de l'apprentissage de Python.
(* Le module numpy doit être installé. Pour mac, il peut être installé avec pip3 install numpy
. Pour Windows, reportez-vous ici, Installer Python3, numpy, pandas, matplotlib, etc. sous Windows)
Fondamentalement, écrivez le code et le résultat de sortie avec le code suivant.
ex.py
code = 'code'
#Résultat de sortie
Par exemple, un tableau bidimensionnel de 2 lignes et 3 colonnes «[[0, 0, 0], [0, 0, 0]]» est créé par les deux méthodes suivantes.
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]]
Exemple: lors de l'attribution de nombres de 0 à 5 à un tableau bidimensionnel 2 par 3 ** (* -1 est utilisé pour calculer automatiquement la taille de cette dimension à partir d'autres dimensions.) **
ex.py
import numpy as np
#0~Générez automatiquement des séquences jusqu'à 5
a = np.arange(6)
print(a)
# [0 1 2 3 4 5]
#Convertir un tableau unidimensionnel a en un tableau bidimensionnel
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]]
Pour y accéder en spécifiant la plage, spécifiez comme X [début: fin: étape]
.
Notez que la fin n'est pas incluse pour le moment. (La fin est incluse dans Matlab.)
Si le début est omis, ce sera depuis le début, si la fin est omis, ce sera la fin et si l'étape est omise, l'étape sera 1.
Dans le cas de plusieurs dimensions, spécifiez chacune en les séparant par une virgule (,). La méthode de spécification est la même que pour unidimensionnel.
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[Gamme de ligne,Gamme de colonnes]
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]]
#La partie qui satisfait la condition est True,Un tableau numpy est renvoyé où la partie non satisfaite est False.
print(a > 5)
# [[False False False False]
# [False False True True]
# [ True True True True]]
#La valeur de la pièce qui satisfait la condition est renvoyée.
print( a[a > 5] )
# [ 6 7 8 9 10 11]
Si le deuxième argument «axe» est spécifié, l'index avec la valeur maximale est renvoyé le long de chaque axe.
Par exemple, si ʻaxis = 0, le numéro de ligne maximum pour chaque colonne est renvoyé. La valeur maximale de chaque colonne elle-même est obtenue en définissant
np.max () et ʻaxis = 0
. (Si axis = 1, le numéro de colonne maximal pour chaque ligne est renvoyé.)
ex.py
import numpy as np
a = np.array([[20, 50, 30], [60, 40, 10]])
print(a)
# [[20 50 30]
# [60 40 10]]
#axis=Si 1, le numéro de colonne maximum pour chaque colonne est renvoyé.
print(np.argmax(a, axis=0))
# [1 0 0]
#Valeur maximale par colonne
print(np.max(a, axis=0))
# [60 50 30]
#Axe similaire=Si 1, le numéro de colonne maximum pour chaque ligne est renvoyé.
print(np.argmax(a, axis=1))
# [1 0]
#Valeur maximale par ligne
print(np.max(a, axis=1))
# [50 60]
De même, les applications suivantes sont possibles.
・ Numpy.sum ()
: Total
・ Numpy.mean ()
: Moyenne
・ Numpy.min ()
: Minimum / numpy.max ()
: Maximum
・ Autres (numpy.std ()
: écart type / numpy.var ()
: dispersion, etc.)
Vous pouvez obtenir la matrice transposée du tableau bidimensionnel d'origine (matrice) avec l'attribut T
.
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]]
-L'attribut T renvoie une vue (référence) du tableau d'origine et la modification d'un élément modifie l'autre.
-Vous pouvez vérifier si deux ndarray
font référence aux mêmes données de mémoire (l'un est l'autre vue) avec np.shares_memory ()
.
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]]
Si vous souhaitez les traiter comme des données séparées, faites une copie avec 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]]
Je vous serais reconnaissant de bien vouloir me dire d’autres bonnes solutions ou informations utiles à connaître.