web-dev-qa-db-fra.com

Je souhaite sélectionner une plage d'index spécifique dans un tableau

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]
7
azeez

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

3
enumaris

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]
3
sarannns