2010-07-14 5 views
2

Je suis nouveau sur python et je voulais faire quelque chose que je fais normalement dans matlab/R tout le temps, mais je ne pouvais pas le comprendre à partir des docs.triture des éléments du tableau python avec un vecteur similaire à matlab/R

Je voudrais couper un tableau non comme 0: 3, qui comprend des éléments 0,1,2 mais comme un vecteur explicite d'indices tels que 0,3 Par exemple, disons que j'avais cette structure de données

a = [1, 2, 3, 4, 5] 

Je voudrais le deuxième et le troisième élément donc je pensais que quelque chose comme ça fonctionnerait

a[list(1,3)] 

mais qui me donne cette erreur

TypeError: list indices must be integers

Cela se produit pour la plupart des autres types de données, ainsi que des tableaux tels numpy

En Matlab, vous pourriez même dire une [liste (2,1)] qui renverrait cette deuxième puis le premier élément.

Il existe une implémentation alternative que je considère, mais je pense qu'elle serait lente pour les grandes baies. Au moins, ce serait sacrément lent dans matlab. J'utilise principalement des tableaux numériques.

[ a[i] for i in [1,3] ] 

Quelle est la manière de python oh sages? Merci!

Répondre

1

NumPy vous permet d'utiliser des listes comme indices:

import numpy 
a = numpy.array([1, 2, 3, 4, 5]) 
a[[1, 3]] 

Notez que cela fait une copie au lieu d'une vue.

Questions connexes