2 votes

Utilisation : pour découper plusieurs éléments dans une liste ou un tableau numpy

Je rencontre quelques difficultés à essayer de comprendre comment extraire plusieurs valeurs dans une liste qui sont espacées de quelques indices. Par exemple, étant donné une liste l = [0,1,2,3,4,5,6,7,8,9,10], je veux seulement extraire les valeurs [1,2,3] et [6,7,8,9]. Je pourrais faire l[1:4]+l[6:-1], mais y a-t-il un moyen d'écrire l[1:4,6:-1]?

C'est en réalité un problème secondaire par rapport au problème principal que j'ai avec un dataframe pandas. J'ai un dataframe, df, avec les colonnes ['A','B','C','I1','D','E','F','I2','I3'], et je veux uniquement conserver les colonnes importantes ['I1', 'I2', 'I3']. Maintenant, l'approche actuelle que j'utilise est

df.drop(df.columns[0:3], axis=1, inplace=True)
df.drop(df.columns[4:7], axis=1, inplace=True)

Y a-t-il un moyen de le faire en une seule ligne sans écrire explicitement les valeurs des colonnes?

Merci!
PS. Je sais que les dataframes pandas utilisent numpy, et je n'ai pas trouvé de solutions de contournement en numpy non plus, mais je pense que la syntaxe pour supprimer des colonnes est de format standard de liste python, si cela a un sens.

EDIT: J'ai trouvé un moyen de le faire pour numpy mais c'est aussi sur 2 lignes, à partir de cette question. Nous pouvons faire:
indices = np.hstack((np.arange(0:3), np.arange(4:7))
df.drop(df.columns[indices], axis=1, inplace=True)

Cependant, je suis toujours à la recherche de méthodes généralisées en une seule ligne.

3voto

jezrael Points 290608

Je pense que vous avez besoin de numpy.r_ pour concaténer les indices :

print(np.r_[1:4, 6:10])
[1 2 3 6 7 8 9]

0voto

ettanany Points 9471

En utilisant la compréhension de liste, vous pouvez faire :

>>> [item for item in l[1:4] + l[6:-1]]
[1, 2, 3, 6, 7, 8, 9]

Vous pouvez également utiliser extend() de cette manière :

>>> res = l[1:4]
>>> res.extend(l[6:-1])
>>> res
[1, 2, 3, 6, 7, 8, 9]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X