[PYTHON] Diverses méthodes pour extraire les colonnes du tableau NumPy

Diverses méthodes pour extraire des colonnes d'un tableau à deux dimensions.

import

python


import numpy as np

Génération de séquence

Tout d'abord, générez un tableau 5x4 de manière appropriée

python


a = np.arange(5*4).reshape([5, 4])
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]
#  [16 17 18 19]]

Extraire une colonne spécifique

python


#2ème rangée uniquement
b = a[:, 2]
print(b)
# [ 2 6 10 14 18]

Si ʻa [ligne, colonne] est spécifié, la ligne est spécifiée dans la partie row et la colonne est spécifiée dans la partie column. Puisque nous voulons récupérer la colonne cette fois, la partie row est toujours:. En décrivant uniquement: , cela signifie qu'aucune ligne particulière n'est spécifiée. En d'autres termes, ʻa [:, 2] Signifie, "De toutes les lignes, veuillez uniquement l'élément avec l'index 2."

Extraire plusieurs colonnes consécutives

Extrayez plusieurs colonnes consécutives, telles que les 1ère, 2ème et 0ème à 2ème colonnes.

python


# 1,2e rangée
b = a[:, 1:3]
print(b)
# [[ 1  2]
#  [ 5  6]
#  [ 9 10]
#  [13 14]
#  [17 18]]

Puisque «1: 3» signifie 1 ou plus et moins de 3, les 1ère et 2ème colonnes peuvent être supprimées. Si vous spécifiez comme «1:» ou «: 3», vous pouvez obtenir toutes les colonnes au-dessus de la première colonne et en dessous de la troisième colonne.

python


#1ère rangée~
b = a[:, 1:]
print(b)
# [[ 1  2  3]
#  [ 5  6  7]
#  [ 9 10 11]
#  [13 14 15]
#  [17 18 19]]

# 0~2e rangée
b = a[:, :3]
print(b)
# [[ 0  1  2]
#  [ 4  5  6]
#  [ 8  9 10]
#  [12 13 14]
#  [16 17 18]]

Colonnes paires, colonnes impaires, etc.

python


#Générer un tableau 4x8
a = np.arange(4*8).reshape([4, 8])
# [[ 0  1  2  3  4  5  6  7]
#  [ 8  9 10 11 12 13 14 15]
#  [16 17 18 19 20 21 22 23]
#  [24 25 26 27 28 29 30 31]]

#Colonne paire
b = a[:, ::2]
print(b)
# [[ 0  2  4  6]
#  [ 8 10 12 14]
#  [16 18 20 22]
#  [24 26 28 30]]

#Colonne impaire
b = a[:, 1::2]
print(b)
# [[ 1  3  5  7]
#  [ 9 11 13 15]
#  [17 19 21 23]
#  [25 27 29 31]]

De cette manière, comme il suit fondamentalement la méthode de fonctionnement de la liste, il peut être acquis par multiples ou dans l'ordre inverse.

python


#Rangées multiples de 3 à partir de l'arrière
b = a[:, ::-3]
print(b)
# [[ 7  4  1]
#  [15 12  9]
#  [23 20 17]
#  [31 28 25]]

#Passer une ligne de la première ligne à moins de la septième ligne
b = a[:, 1:7:2]
print(b)
# [[ 1  3  5]
#  [ 9 11 13]
#  [17 19 21]
#  [25 27 29]]

Extraire plusieurs colonnes de manière irrégulière

Personnellement, le sujet principal est d'ici. Il y a des moments où vous souhaitez récupérer des colonnes de manière irrégulière, telles que les colonnes 1, 5 et 6. Cela demande beaucoup de travail, mais cela peut être réalisé en préparant un filtre de la même longueur que le nombre de colonnes.

python


#Index 1, 5,La valeur de 6 est True,Autre que cela, une liste de Fausse longueur 8
f = [False, True, False, False, False, True, True, False]

b = a[:, f]
print(b)
# [[ 1  5  6]
#  [ 9 13 14]
#  [17 21 22]
#  [25 29 30]]

#Générer une matrice zéro 1x8 de type booléen,Un modèle qui modifie uniquement la valeur d'index de la colonne souhaitée en True
f = np.zeros(8, dtype=bool)
columns = [1, 5, 6]
f[columns] = True

b = a[:, f]
print(b)
# [[ 1  5  6]
#  [ 9 13 14]
#  [17 21 22]
#  [25 29 30]]

#Si vous voulez obtenir d'autres colonnes que les colonnes spécifiées, générez un tableau tout vrai avec des uns,Remplacez uniquement les colonnes inutiles par False
f = np.ones(8, dtype=bool)
columns = [1, 5, 6]
f[columns] = False

b = a[:, f]
print(b)
# [[ 0  2  3  4  7]
#  [ 8 10 11 12 15]
#  [16 18 19 20 23]
#  [24 26 27 28 31]]

Je pense que la plupart des tableaux gérés par ~~ numpy ont un grand nombre de colonnes, donc je pense que la deuxième méthode sera la principale. L'exemple utilise «np.zeros», mais dans certaines situations, il peut être plus facile de créer un tableau de «np.ones» avec tous les éléments «True», puis de changer uniquement les colonnes indésirables en «False». . ~~

python


#Générer un tableau 4x8
a = np.arange(4*8).reshape([4, 8])
# [[ 0  1  2  3  4  5  6  7]
#  [ 8  9 10 11 12 13 14 15]
#  [16 17 18 19 20 21 22 23]
#  [24 25 26 27 28 29 30 31]]

# 1, 5,Sortez 6 rangs
b = a[:, [1, 5, 6]]
print(b)
# [[ 1  5  6]
#  [ 9 13 14]
#  [17 21 22]
#  [25 29 30]]

en conclusion

Je pensais que ce serait difficile à comprendre même si l'histoire était trop développée, donc cette fois je me suis concentré uniquement sur les colonnes, mais il est également possible d'extraire une colonne spécifique d'une ligne spécifique en spécifiant une ligne ainsi qu'une colonne. En appliquant ces méthodes, vous pouvez extraire les éléments souhaités.

Je pense que la méthode de création d'une matrice zéro et d'extraction des colonnes, que j'ai expliquée à la toute fin, était assez propre pour moi, mais je pense qu'il peut y avoir d'autres méthodes plus faciles ~~.

Postscript

@Nkay a commenté un moyen plus intelligent de récupérer plusieurs colonnes, je l'ai donc ajouté. (4 juillet 2020)

Recommended Posts

Diverses méthodes pour extraire les colonnes du tableau NumPy
Différentes façons de créer un dictionnaire (mémoires)
Différentes façons de créer un tableau de nombres de 1 à 10 en Python.
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
[Python] Compréhension de liste Différentes façons de créer une liste
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Convertir le tableau NumPy "ndarray" en lilt en Python [tolist ()]
Essayez de le résoudre de différentes manières (SAT, CSP)
2 façons de lire tous les fichiers csv dans un dossier
Créer un tableau numpy python
Comment découper un bloc de plusieurs tableaux à partir d'un multiple en Python
Différentes façons de calculer la similitude entre les données avec python
Comment extraire un index autre qu'un index spécifique avec Numpy
Extraire les éléments du tableau et les index dans l'ordre décroissant avec numpy
Je veux aligner les nombres valides dans le tableau Numpy
Accès en indice au tableau numpy python
Comment transformer une chaîne en tableau ou un tableau en chaîne en Python
6 façons d'enchaîner des objets en Python
J'ai écrit un script pour extraire les liens de pages Web en Python
5 façons de créer un chatbot Python
Extraire plusieurs éléments avec le tableau Numpy
Inverser le tableau booléen numpy dans tilda
Créez un tableau vide avec Numpy pour ajouter des lignes pour chaque boucle
Comment utiliser les colonnes calculées dans CASTable
Je veux imprimer dans la notation d'inclusion
Comment obtenir stacktrace en python
Comment extraire une zone de polygone en Python
[V11 ~] Un mémorandum à mettre dans Misskey
Divers commentaires à écrire dans le programme
Différentes façons de détruire des ressources avec une portée
Ajouter une série à la colonne dans les pandas python
Une histoire déroutante avec deux façons d'implémenter XGBoost en Python + notes générales
Enregistrez le tableau numpy dans un fichier wav à l'aide du module wave
Extraire des éléments (en utilisant une liste d'index) comme NumPy d'une liste / taple Python
Différentes façons d'exécuter des fichiers .py sous Windows
3 façons d'analyser les chaînes de temps avec python [Note]
Calculons en fait le problème statistique avec Python
[Python] La route du serpent (4) Numpy
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Ajouter des lignes à un tableau vide avec numpy
Je veux créer une fenêtre avec Python
Comment installer pip, numpy sur Autodesk MAYA
[Python] Permutation des lignes et des colonnes de données Numpy
Comment créer un fichier JSON en Python
Une manière intelligente de chronométrer le traitement avec Python
Comment implémenter un sélecteur de dégradé dans Houdini
Étapes pour développer une application Web en Python
Comment extraire le coefficient de la formule minute
Convertir une liste multidimensionnelle (tableau) en une dimension
Comment vérifier / extraire des fichiers dans un package RPM
Pour ajouter un module à python que vous mettez dans Julialang
Extraire des lignes contenant une "chaîne" spécifique avec Pandas
Comment notifier les canaux Discord en Python
Sortie sous la forme d'un tableau python
[Python] Comment dessiner un histogramme avec Matplotlib