Sélectionner certaines colonnes d'un fichier de données avec numpy de python

Published: 31 octobre 2017

DMCA.com Protection Status

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