[Python] Manipulez les tableaux bidimensionnels à volonté. [Initialisation / Référence / Extraction / Calcul / Translocation]

introduction

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

Initialisation de la liste

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.

1. Créez un tableau à deux dimensions en utilisant la notation d'inclusion de liste

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. Créez un tableau à deux dimensions à l'aide du module numpy

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

Convertir un tableau unidimensionnel en tableau bidimensionnel

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

Accès en spécifiant une plage

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

Extraire les données qui remplissent les conditions

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]

Trouvez la valeur maximale pour chaque colonne / ligne

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

Translocation d'un tableau bidimensionnel (matrice)

Attribut T (.T)

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

finalement

Je vous serais reconnaissant de bien vouloir me dire d’autres bonnes solutions ou informations utiles à connaître.

Recommended Posts

[Python] Manipulez les tableaux bidimensionnels à volonté. [Initialisation / Référence / Extraction / Calcul / Translocation]
[Python] Référence Numpy, extraction, combinaison