Pour faire clairement ma question dire si j'ai un tableau A comme Sortir [123]: [1, 3, 4, 6, 9, 10, 54] Lorsque j'essaie de rechercher les numéros dans la liste, la recherche retourne la valeur correcte, mais lorsque j'essaie quelque chose dans la liste, il renvoie une valeur absurde
Voici quelques-uns des résultats P>
In [131]: a Out[131]: [1, 3, 4, 6, 9, 10, 54] In [132]: searchsorted(a,1) Out[132]: 0 In [133]: searchsorted(a,6) Out[133]: 3 In [134]: searchsorted(a,[9,54,1]) Out[134]: array([4, 6, 0]) In [135]: searchsorted(a,[9,54,1,0]) Out[135]: array([4, 6, 0, 0]) ***> # here 0 is not in the list, but turns up @ position 0*** In [136]: searchsorted(a,740) Out[136]: 7 ***> # here 0 is not in the list, but turns up @ position 7***
4 Réponses :
du Docs Il indique qu'il utilise Recherche binaire pour repérer le point d'insertion d'un élément dans une liste triée. P>
Le mot «point d'insertion» signifie que si l'élément I est inséré à l'index du point d'insertion N dans la matrice triée A, la matrice A restera triée avec un nouvel article i. P>
Vos exemples tels que Vous pouvez utiliser le module [9, 54, 1] code> est sans signification car le tableau n'est pas trié. p>
bisect code> en python pour faire la même chose, sans engourdissement. p>
[9,54,1] code> n'est pas la liste à rechercher, c'est une liste d'éléments pour renvoyer les points d'insertion dans A code> car. i> Cela fonctionne bien, voyez la sortie de celui-ci.
@paxdiablo ouais, je n'ai pas vu ça
Recherchez les indices dans une matrice triée A tel que, si les éléments correspondants de V ont été insérés avant les indices, l'ordre d'A serait préservé. strong> p>
blockQuote>
insertion recherche: code> vous indique où em> l'élément appartient à la commande de garantie: p>
740 code> en position 7 conserverait la commande, comme l'insérerait 0 à la position 0. P>
Si vous souhaitez déterminer si un numéro est dans un tableau, vous pouvez utiliser == code> et non nul code> pour faire ceci: len ((A == 740) [ 0]) code> est zéro.
Merci @jozzas l'a eu. Je pensais que cela effectue une recherche binaire.
Ou vous pouvez faire 740 == A [RECHERCHED (A, 740)]] CODE>, pour utiliser toujours la recherche binaire.
SO Vous pouvez voir cela en lisant les docs ici A>: p>
Trouvez des indices où des éléments doivent être insérés pour maintenir l'ordre. P>
Recherchez les indices dans une matrice triée a telle que, si les éléments correspondants de V ont été insérés avant les indices, l'ordre d'A serait préservé. P>
blockQuote> recherche: code> ne vous dit pas où les choses sont, em> il vous dit où les choses doivent aller em> pour garder la liste triée. P >
0 code> devrait être inséré à la position 0, avant le 1 code>. De même, 740 code> doit être inséré à la position 7, au-delà de l'extrémité actuelle de la liste. P>
Cela peut également vous dire où les choses que sont i> dans l'index sont, si la valeur que vous recherchez est située dans l'index 'gauche' code>. L'utilisation de la recherche binaire pour déterminer le confinement reste la méthode la plus rapide à le faire.
Ceci est mon résultat de mon exemple p> :) p> p>
Veuillez formater l'échantillon de code et inclure le résultat sous forme de texte dans votre réponse. Si IMGUR arrête l'hébergement de l'image à l'avenir, les lecteurs perdront l'accès à une partie importante de votre réponse.
Qu'est-ce que
recherche: code>?SearchSorted code> n'est clairement pas une intégrée.@Volatiality
recherche: code> est une fonction numpue / scipe. docs.cipy.org/doc/numpy/reference/generated/ ...