Quelqu'un sait-il comment extraire une colonne d'un tableau multidimensionnel en Python ?
Réponses
Trop de publicités?
Peter Paul
Points
151
Lee
Points
301
array = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
col1 = [val[1] for val in array]
col2 = [val[2] for val in array]
col3 = [val[3] for val in array]
col4 = [val[4] for val in array]
print(col1)
print(col2)
print(col3)
print(col4)
Output:
[1, 5, 9, 13]
[2, 6, 10, 14]
[3, 7, 11, 15]
[4, 8, 12, 16]
Russell
Points
320
Si vous disposez d'un tableau bidimensionnel en Python (pas en numpy), vous pouvez extraire toutes les colonnes comme suit,
data = [
['a', 1, 2],
['b', 3, 4],
['c', 5, 6]
]
columns = list(zip(*data))
print("column[0] = {}".format(columns[0]))
print("column[1] = {}".format(columns[1]))
print("column[2] = {}".format(columns[2]))
L'exécution de ce code donnera,
>>> print("column[0] = {}".format(columns[0]))
column[0] = ('a', 'b', 'c')
>>> print("column[1] = {}".format(columns[1]))
column[1] = (1, 3, 5)
>>> print("column[2] = {}".format(columns[2]))
column[2] = (2, 4, 6)
Bien sûr, vous pouvez extraire une seule colonne par index (ex. columns[0]
)
renatov
Points
101
Gregg Lind
Points
6905
L'opérateur itemgetter peut aussi vous aider, si vous aimez le style map-reduce de Python, plutôt que les compréhensions de listes, pour un peu de variété !
# tested in 2.4
from operator import itemgetter
def column(matrix,i):
f = itemgetter(i)
return map(f,matrix)
M = [range(x,x+5) for x in range(10)]
assert column(M,1) == range(1,11)