Je sais, il existe une méthode pour la liste python retourner le premier indice de quelque chose
Y a-t-il quelque chose comme ça pour tableaux numpy ?
Merci pour votre aide :)
Je sais, il existe une méthode pour la liste python retourner le premier indice de quelque chose
Y a-t-il quelque chose comme ça pour tableaux numpy ?
Merci pour votre aide :)
Oui, ici est la réponse donnée d'un tableau Numpy, array, et une valeur, un élément à rechercher.
itemindex = numpy.where(array==item)
Le résultat est un tuple avec d'abord tous les indices de ligne, puis toute la colonne d'indices.
Par exemple, si le tableau est à deux dimensions et il contenait votre article à deux emplacements, puis
array[itemindex[0][0]][itemindex[1][0]]
serait égal à votre article et qui seraient donc
array[itemindex[0][1]][itemindex[1][1]]
Si vous avez besoin de l'index de la première occurrence d' une seule valeur, vous pouvez utiliser nonzero
(ou where
, ce qui équivaut à la même chose dans ce cas):
>>> t = array([1, 1, 1, 2, 2, 3, 8, 3, 8, 8])
>>> nonzero(t == 8)
(array([6, 8, 9]),)
>>> nonzero(t == 8)[0][0]
6
Si vous avez besoin de le premier index de chacun de plusieurs valeurs, vous pouvez évidemment faire la même chose que ci-dessus à plusieurs reprises, mais il y a un truc qui peut être plus rapide. Le code suivant trouve les indices du premier élément de chaque sous-suite:
>>> nonzero(r_[1, diff(t)[:-1]])
(array([0, 3, 5, 6, 7, 8]),)
De l'avis qu'il trouve le début de deux sous-suite de 3s et les deux sous-séquences de 8s:
[1, 1, 1, 2, 2, 3, 8, 3, 8, 8]
Il est donc légèrement différente de celle de trouver la première occurrence de chaque valeur. Dans votre programme, vous pourriez être en mesure de travailler avec une version triée d' t
pour obtenir ce que vous voulez:
>>> st = sorted(t)
>>> nonzero(r_[1, diff(st)[:-1]])
(array([0, 3, 5, 7]),)
Si vous allez utiliser cela comme un indice de quelque chose d'autre, vous pouvez utiliser des booléens indices si les tableaux sont broadcastable; vous n'avez pas besoin explicite des indices. L'absolu de la façon la plus simple pour ce faire est tout simplement de l'indice est basé sur une valeur de vérité.
other_array[first_array == item]
Toute opération booléenne œuvres:
a = numpy.arange(100)
other_array[first_array > 50]
La méthode différente de zéro prend des valeurs booléennes, trop:
index = numpy.nonzero(first_array == item)[0][0]
Les deux zéros sont pour le n-uplet des indices (en supposant que first_array est 1D) et ensuite le premier élément dans le tableau d'indices.
pour indexer sur n’importe quel critère, vous pouvez donc quelque chose comme ce qui suit :
[modifier] et voici une fonction rapide pour faire ce que list.index() fait, sauf ne lève une exception si elle est introuvable. attention--c’est sans doute très lent sur de grands réseaux. vous pouvez probablement monkeypatch cela sur tableaux si vous préférez utiliser il comme méthode.
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.