200 votes

Numpy première occurrence d'une valeur supérieure à la valeur existante

J'ai un tableau 1D dans numpy et je veux trouver la position de l'index où une valeur dépasse la valeur dans le tableau numpy.

Par exemple

aa = range(-10,10)

Trouver une position dans aa où, la valeur 5 est dépassé.

4voto

mfeldt Points 51

Je voudrais proposer

np.min(np.append(np.where(aa>5)[0],np.inf))

Cela renverra le plus petit indice où la condition est remplie, tout en renvoyant l'infini si la condition n'est jamais remplie (et where renvoie un tableau vide).

1voto

sivic Points 503

Je choisirais

i = np.min(np.where(V >= x))

V est un vecteur (tableau 1d), x est la valeur et i est l'indice résultant.

1voto

Eduardo Gomes Points 33

Vous devez utiliser np.where au lieu de np.argmax . Ce dernier renverra la position 0 même si aucune valeur n'est trouvée, ce qui ne correspond pas aux index que vous attendez.

>>> aa = np.array(range(-10,10))
>>> print(aa)
array([-10,  -9,  -8,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,   2,
         3,   4,   5,   6,   7,   8,   9])

Si la condition est remplie, il renvoie un tableau des index.

>>> idx = np.where(aa > 5)[0]
>>> print(idx)
array([16, 17, 18, 19], dtype=int64)

Sinon, s'il n'est pas rencontré, il renvoie un tableau vide.

>>> not_found = len(np.where(aa > 20)[0])
>>> print(not_found)
array([], dtype=int64)

Le point contre argmax pour ce cas est : le plus simple est le mieux, SI la solution n'est pas ambiguë. . Donc, pour vérifier si quelque chose est tombé dans la condition, il suffit de faire un if len(np.where(aa > value_to_search)[0]) > 0 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X