C'est une question facile mais disons que j'ai une matrice MxN. Tout ce que je veux faire, c'est extraire des colonnes spécifiques et les stocker dans un autre tableau numpy mais je reçois des erreurs de syntaxe non valides. 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é d'intelligent concernant ce scénario spécifique.
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
…
En supposant que vous souhaitiez obtenir les colonnes 1 et 9 avec cet extrait de code, il devrait être:
extractedData = data[:,[1,9]]
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]
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 nécessairement être en 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 ]])
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 on pouvait s'y attendre, mais plutôt un tableau contenant les éléments de la colonne extraite.
Pour la convertir en matrice, utilisez la méthode refaçonner (M, 1) sur le tableau résultant.
Vous pouvez utiliser :
extracted_data = data.ix[:,['Column1','Column2']]
Une dernière chose à laquelle vous devriez faire attention lors de la sélection des colonnes du 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é. Alors:
print data.shape # gives [10,20,30]
selection = data[1,:,[1,9]]
print selection.shape # gives [2,20] instead of [20,2]!!
Je pense que la solution ici ne fonctionne plus avec une mise à jour de la version python, une façon de le faire avec une nouvelle fonction python est la suivante:
extracted_data = data[['Column Name1','Column Name2']].to_numpy()
ce qui vous donne le résultat souhaité.
La documentation que vous pouvez trouver ici: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_numpy.html#pandas.DataFrame.to_numpy