J'ai un tableau numpy et je souhaite sélectionner un certain nombre de valeurs en fonction de leur numéro d'index. J'utilise Python3.6
par exemple:
np.array:
index#
[0]
[1] + + + + + + + + + + + + + + + + + + + +
[2] + I want to selct + + I don't want to select:
[3] + the indexs: + + [0]
[4] + [2] + + [10]
[5] + [4] + + Or any between
[6] + [6] + +
[7] + [8] + + + + + + + + + + +
[8] + + + + + + + + + +
[9]
[10]
comme vous pouvez le voir pour l'exemple ci-dessus, je veux sélectionner le numéro d'index:
if x = 2, 4, 8
cela fonctionnera si je spécifie juste les nombres en x mais si je veux faire une variable x j'ai essayé par exemple:
if x:
for i in np.arange(x+2, x-last_index_number, x+2):
return whatever
Où x + 2 = le premier index que je veux (le point de départ). x-last_index_number = le dernier index que je veux (le dernier point). x + 2 = l'étape (je veux qu'il passe au numéro d'index suivant en ajoutant 2 à x et ainsi de suite. mais cela n'a pas fonctionné.
Donc ma question puis-je spécifier des numéros à sélectionner dans un certain ordre:
[5][10][15][20][25][30][35]
or
[4][8][12][16][20]
Le découpage Numpy vous permet de saisir une liste d'index dans un tableau afin que vous puissiez découper aux valeurs exactes que vous souhaitez.
Par exemple:
import numpy as np
a = np.random.randn(10)
a[[2,4,6,8]]
Cela renverra les 2e, 4e, 6e et 8e éléments du tableau (en gardant à l'esprit que python commencent à 0). Donc, si vous voulez que chaque 2e élément commence à partir d'un index x, vous peut simplement remplir une liste avec ces éléments, puis alimenter cette liste dans le tableau pour obtenir les éléments souhaités, par exemple:
idx = list(range(2,10,2))
a[idx]
Cela renvoie à nouveau les éléments souhaités (indice 2,4,6,8).
Votre x est un tableau de longueur 20
x = np.arange(0,20)
Retour
x [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
Accédez à chaque nième élément (même les indices ici) en ignorant les deux premiers et les deux derniers indices du tableau x par
print(x[2:len(x)-1:2])
Retour
[2 4 6 8]
Et pour le reste de façon similaire,
print(x[5:len(x)-1:5])
print(x[4:len(x)-1:4])
Retour
[ 5 10 15]
[ 4 8 12 16]