web-dev-qa-db-fra.com

Python: Comment obtenir les valeurs d'un tableau à certaines positions d'index?

J'ai un tableau numpy comme celui-ci:

a = [0,88,26,3,48,85,65,16,97,83,91]

Comment puis-je obtenir les valeurs de certaines positions d'indice en UNE seule étape? Par exemple:

ind_pos = [1,5,7]

Le résultat devrait être:

[88,85,16]
15
MoTSCHIGGE

Il suffit d'indexer à l'aide de vous ind_pos

ind_pos = [1,5,7]
print (a[ind_pos]) 
[88 85 16]


In [55]: a = [0,88,26,3,48,85,65,16,97,83,91]

In [56]: import numpy as np

In [57]: arr = np.array(a)

In [58]: ind_pos = [1,5,7]

In [59]: arr[ind_pos]
Out[59]: array([88, 85, 16])
17
Padraic Cunningham

La version "sans importation" d'un liner

a = [0,88,26,3,48,85,65,16,97,83,91]
ind_pos = [1,5,7]
[ a[i] for i in ind_pos ]
9
Ohad Cohen

Bien que vous posiez des questions sur les tableaux numpy, vous pouvez obtenir le même comportement pour les listes normales Python en utilisant operator.itemgetter.

>>> from operator import itemgetter
>>> a = [0,88,26,3,48,85,65,16,97,83,91]
>>> ind_pos = [1, 5, 7]
>>> print itemgetter(*ind_pos)(a)
(88, 85, 16)
4
chepner

Vous pouvez utiliser tableaux d'index , passez simplement votre ind_pos comme argument d'index comme ci-dessous:

a = np.array([0,88,26,3,48,85,65,16,97,83,91])
ind_pos = np.array([1,5,7])

print(a[ind_pos])
# [88,85,16]

Les tableaux d'index ne doivent pas nécessairement être des tableaux numpy, ils peuvent également être des listes ou tout objet de type séquence (mais pas des tuples).

2
Ffisegydd