Extraction de colonnes spécifiques dans le tableau numpy

C'est une question facile mais disons que j'ai une matrice MxN. Tout ce que je veux faire est d'extraire des colonnes spécifiques et de les stocker dans un autre tableau numpy mais j'obtiens des erreurs de syntaxe invalides. Voici le code:

extractedData = data[[:,1],[:,9]]. 

Il semble que la ligne ci-dessus devrait suffire mais je suppose que non. J'ai regardé autour de moi mais je n'ai rien trouvé de syntaxique concernant ce scénario spécifique.

106
demandé sur Michael J. Barber 2011-12-05 18:20:47

8 réponses

Je suppose que vous vouliez des colonnes 1 et 9? C'est

data[:, [1, 9]]

, Ou avec des noms:

data[:, ['Column Name1','Column Name2']]

Vous pouvez obtenir les noms de data.dtype.names...

180
répondu Fred Foo 2018-09-21 10:37:07

En supposant que vous voulez obtenir les colonnes 1 et 9 avec cet extrait de code, il devrait être:

extractedData = data[:,[1,9]]
20
répondu Michael J. Barber 2011-12-05 14:26:02

Si vous voulez extraire seulement quelques colonnes:

idx_IN_columns = [1, 9]
extractedData = data[:,idx_IN_columns]

Si vous souhaitez exclure des colonnes spécifiques:

idx_OUT_columns = [1, 9]
idx_IN_columns = [i for i in xrange(np.shape(data)[1]) if i not in idx_OUT_columns]
extractedData = data[:,idx_IN_columns]
5
répondu queise 2015-06-01 11:14:00

Une chose que je voudrais souligner est que si le nombre de colonnes que vous voulez extraire est 1, la matrice résultante ne serait pas une matrice Mx1 comme vous pouvez vous y attendre, mais plutôt un tableau contenant les éléments de la colonne que vous avez extraite.

Pour convertir la Matrice remodeler(M,1) méthode doit être utilisée sur le tableau résultant.

2
répondu Daksh 2018-03-05 16:20:51

Vous pouvez utiliser extracted_data = données.ix[:,['Colonne1','Colonne2']]

1
répondu Rahul 2017-09-04 09:34:10

Encore une chose à laquelle vous devriez faire attention lors de la sélection de colonnes à partir D'un tableau N-D en utilisant une liste comme celle-ci:

data[:,:,[1,9]]

Si vous supprimez une dimension (en sélectionnant une seule ligne, par exemple), le tableau résultant sera (pour une raison quelconque) permuté. Donc:

print data.shape            # gives [10,20,30]
selection = data[1,:,[1,9]]
print selection.shape       # gives [2,20] instead of [20,2]!!
1
répondu Jan Kukacka 2018-02-05 16:25:05

Juste:

>>> m = np.matrix(np.random.random((5, 5)))
>>> m
matrix([[0.91074101, 0.65999332, 0.69774588, 0.007355  , 0.33025395],
        [0.11078742, 0.67463754, 0.43158254, 0.95367876, 0.85926405],
        [0.98665185, 0.86431513, 0.12153138, 0.73006437, 0.13404811],
        [0.24602225, 0.66139215, 0.08400288, 0.56769924, 0.47974697],
        [0.25345299, 0.76385882, 0.11002419, 0.2509888 , 0.06312359]])
>>> m[:,[1, 2]]
matrix([[0.65999332, 0.69774588],
        [0.67463754, 0.43158254],
        [0.86431513, 0.12153138],
        [0.66139215, 0.08400288],
        [0.76385882, 0.11002419]])

Les colonnes ne doivent pas être dans l'ordre:

>>> m[:,[2, 1, 3]]
matrix([[0.69774588, 0.65999332, 0.007355  ],
        [0.43158254, 0.67463754, 0.95367876],
        [0.12153138, 0.86431513, 0.73006437],
        [0.08400288, 0.66139215, 0.56769924],
        [0.11002419, 0.76385882, 0.2509888 ]])
1
répondu yanhh 2018-07-28 01:25:55

Vous pouvez aussi utiliser extractedData=données([:,1],[:,9])

-3
répondu Pranav Mahajan 2017-08-02 17:18:14