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]
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])
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 ]
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)
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).