294 votes

Comment extraire une colonne d'un tableau multidimensionnel ?

Quelqu'un sait-il comment extraire une colonne d'un tableau multidimensionnel en Python ?

269voto

Andre Luiz Points 341
>>> 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 "reshape" pour allouer de la mémoire.

Exemple : (Allocation d'un tableau avec une forme de matrice (3x4))

nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype='double')
my_array = my_array.reshape(nrows, ncols)

225voto

Martin Geisler Points 44779

Se pourrait-il que vous utilisiez un Tableau NumPy ? Python a le array mais qui ne prend pas en charge les tableaux multidimensionnels. Les listes Python normales sont également unidimensionnelles.

Cependant, si vous avez une simple liste à deux dimensions comme celle-ci :

A = [[1,2,3,4],
     [5,6,7,8]]

alors vous pouvez extraire une colonne comme ceci :

def column(matrix, i):
    return [row[i] for row in matrix]

Extraction de la deuxième colonne (index 1) :

>>> column(A, 1)
[2, 6]

Ou alternativement, simplement :

>>> [row[1] for row in A]
[2, 6]

101voto

Andrei Arsenin Points 158

Si vous avez un tableau comme

a = [[1, 2], [2, 3], [3, 4]]

Puis vous extrayez la première colonne comme ça :

[row[0] for row in a]

Le résultat ressemble donc à ceci :

[1, 2, 3]

47voto

Mac D Points 91

Regardez !

a = [[1, 2], [2, 3], [3, 4]]
a2 = zip(*a)
a2[0]

c'est la même chose que ci-dessus sauf que c'est un peu plus net le zip fait le travail mais nécessite des tableaux simples comme arguments, la syntaxe *a décompose le tableau multidimensionnel en arguments de tableaux simples.

17voto

mrkasri Points 303
>>> x = arange(20).reshape(4,5)
>>> x array([[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14],
        [15, 16, 17, 18, 19]])

si vous voulez la deuxième colonne, vous pouvez utiliser

>>> x[:, 1]
array([ 1,  6, 11, 16])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X