Considérons le cas suivant: on dispose d'un simple fichier de données:
0.37697331 0.47032772 0.69907707 0.47092273 0.28904637
0.0610754 0.88482415 0.0494154 0.29280933 0.45777159
0.46547072 0.88173601 0.73288691 0.40003478 0.17603331
0.69995587 0.84150566 0.66997278 0.65883318 0.79641699
0.27365186 0.86920001 0.56418446 0.09814907 0.51637348
0.85794189 0.57137175 0.52218132 0.66951256 0.76931912
0.72998093 0.44804322 0.33622477 0.79316277 0.68323531
Comment alors sélectionner certaines colonnes avec python et numpy ?
Lire le fichier
Tout d'abord on peut lire le fichier avec numpy.loadtxt de numpy comme ceci:
>>> import numpy as np
>>> data = np.loadtxt('data.txt')
>>> data
array([[ 0.37697331, 0.47032772, 0.69907707, 0.47092273, 0.28904637],
[ 0.0610754 , 0.88482415, 0.0494154 , 0.29280933, 0.45777159],
[ 0.46547072, 0.88173601, 0.73288691, 0.40003478, 0.17603331],
[ 0.69995587, 0.84150566, 0.66997278, 0.65883318, 0.79641699],
[ 0.27365186, 0.86920001, 0.56418446, 0.09814907, 0.51637348],
[ 0.85794189, 0.57137175, 0.52218132, 0.66951256, 0.76931912],
[ 0.72998093, 0.44804322, 0.33622477, 0.79316277, 0.68323531]])
Sélectionner une colonne
Pour sélectionner une colonne on peut utiliser la syntaxe suivante (Note: colonne indice commence à 0):
>>> A = data[:,1]
>>> A
array([ 0.47032772, 0.88482415, 0.88173601, 0.84150566, 0.86920001,
0.57137175, 0.44804322])
>>> A = data[:,3]
>>> A
array([ 0.47092273, 0.29280933, 0.40003478, 0.65883318, 0.09814907,
0.66951256, 0.79316277])
Sélectionner les premieres colonnes
Pour sélectionner les deux premieres colonnes:
>>> B = data[:,:2]
>>> B
array([[ 0.37697331, 0.47032772],
[ 0.0610754 , 0.88482415],
[ 0.46547072, 0.88173601],
[ 0.69995587, 0.84150566],
[ 0.27365186, 0.86920001],
[ 0.85794189, 0.57137175],
[ 0.72998093, 0.44804322]])
Sélectionner les dernières colonnes
Pour sélectionner les deux dernières colonnes:
>>> C = data[:,2:]
>>> C
array([[ 0.69907707, 0.47092273, 0.28904637],
[ 0.0494154 , 0.29280933, 0.45777159],
[ 0.73288691, 0.40003478, 0.17603331],
[ 0.66997278, 0.65883318, 0.79641699],
[ 0.56418446, 0.09814907, 0.51637348],
[ 0.52218132, 0.66951256, 0.76931912],
[ 0.33622477, 0.79316277, 0.68323531]])
Sélectionner une liste de colonnes
Pour sélectionner les colonnes [2,3]:
>>> D = data[:,[2,3]]
>>> D
array([[ 0.69907707, 0.47092273],
[ 0.0494154 , 0.29280933],
[ 0.73288691, 0.40003478],
[ 0.66997278, 0.65883318],
[ 0.56418446, 0.09814907],
[ 0.52218132, 0.66951256],
[ 0.33622477, 0.79316277]])
Remarque:
On peut aussi utiliser l'option unpack=True de loadtxt et la fonction numpy numpy.column_stack
>>> c0,c1,c2,c3,c4 = np.loadtxt('data.txt',unpack=True)
>>> A = np.column_stack((c1,c3))
>>> A
array([[ 0.47032772, 0.47092273],
[ 0.88482415, 0.29280933],
[ 0.88173601, 0.40003478],
[ 0.84150566, 0.65883318],
[ 0.86920001, 0.09814907],
[ 0.57137175, 0.66951256],
[ 0.44804322, 0.79316277]])
Références
Liens | Site |
---|---|
numpy.loadtxt | scipy doc |
Extracting first n columns of a numpy matrix | stackoverflow |
How to access the ith column of a NumPy multidimensional array? | stackoverflow |
Extracting specific columns in numpy array | stackoverflow |
numpy.column_stack | scipy doc |