Quelqu'un sait-il comment extraire une colonne d'un tableau multidimensionnel en Python?
240
Quelqu'un sait-il comment extraire une colonne d'un tableau multidimensionnel en Python?
>>> import numpy as np
>>> A = np.array([[1,2,3,4],[5,6,7,8]])
>>> A
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> A[:,2] # returns the third columm
array([3, 7])
Voir aussi: "numpy.arange" et "remodeler" pour allouer de la mémoire
Exemple: (Allocation d'un tableau avec mise en forme de matrice (3x4))
nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype='double')
my_array = my_array.reshape(nrows, ncols)
[row, col]
. la virgule se sépare.Serait-ce que vous utilisez un tableau NumPy ? Python a le module tableau , mais cela ne prend pas en charge les tableaux multidimensionnels. Les listes Python normales sont également unidimensionnelles.
Cependant, si vous avez une simple liste bidimensionnelle comme celle-ci:
alors vous pouvez extraire une colonne comme celle-ci:
Extraire la deuxième colonne (index 1):
Ou bien simplement:
la source
Si vous avez un tableau comme
Ensuite, vous extrayez la première colonne comme ça:
Le résultat ressemble donc à ceci:
la source
Vérifiez-le!
c'est la même chose que ci-dessus sauf que d'une manière ou d'une autre, il est plus propre le zip fait le travail mais nécessite des tableaux simples comme arguments, la syntaxe * a décompresse le tableau multidimensionnel en arguments de tableau unique
la source
a2 = zip(*a); a2 = list(a2); a2[0]
La fonction de carte en Python est une autre façon de procéder.
la source
si vous voulez la deuxième colonne que vous pouvez utiliser
la source
arange()
Python3 en dehors de numpy. N'importe qui?la source
L'opérateur itemgetter peut également vous aider, si vous aimez le python de style de réduction de carte, plutôt que les compréhensions de liste, pour un peu de variété!
la source
Vous pouvez également l'utiliser:
Remarque: cela ne fonctionne pas pour le tableau intégré et n'est pas aligné (par exemple, np.array ([[1,2,3], [4,5,6,7]]))
la source
Je pense que vous voulez extraire une colonne d'un tableau tel qu'un tableau ci-dessous
Maintenant, si vous voulez obtenir la troisième colonne au format
Ensuite, vous devez d'abord faire du tableau une matrice
Et maintenant, vous pouvez faire des calculs par élément comme vous le feriez dans Excel.
la source
disons que nous avons une
n X m
matrice (n
lignes etm
colonnes) disons 5 lignes et 4 colonnesPour extraire les colonnes en python, nous pouvons utiliser la compréhension de liste comme celle-ci
Vous pouvez remplacer 4 par le nombre de colonnes de votre matrice. Le résultat est
[ [1,5,9,13,17],[2,10,14,18],[3,7,11,15,19],[4,8,12,16,20] ]
la source
la source
Une autre façon d'utiliser les matrices
la source
Si vous avez un tableau à deux dimensions en Python (pas numpy), vous pouvez extraire toutes les colonnes comme ça,
L'exécution de ce code donnera,
Bien sûr, vous pouvez extraire une seule colonne par index (par exemple
columns[0]
)la source
Bien que vous utilisiez
zip(*iterable)
pour transposer une liste imbriquée, vous pouvez également utiliser ce qui suit si les listes imbriquées varient en longueur:résulte en:
La première colonne est donc:
la source
Et bien un peu tard ...
Si les performances sont importantes et que vos données sont de forme rectangulaire, vous pouvez également les stocker dans une seule dimension et accéder aux colonnes par découpage régulier, par exemple ...
La chose intéressante est que c'est vraiment rapide. Cependant , les indices négatifs ne fonctionnent pas ici! Vous ne pouvez donc pas accéder à la dernière colonne ou ligne par l'index -1.
Si vous avez besoin d'une indexation négative, vous pouvez régler un peu les fonctions d'accesseur, par exemple
la source
Si vous voulez saisir plus d'une colonne, utilisez simplement slice:
la source
Je préfère le conseil suivant: avoir la matrice nommée
matrix_a
et utilisercolumn_number
, par exemple:la source
Utilisez simplement transpose (), alors vous pouvez obtenir les colonnes aussi facilement que vous obtenez des lignes
la source
Toutes les colonnes d'une matrice dans une nouvelle liste:
la source