J'ai un très large éventail numpy (contenant jusqu'à un million d'éléments) comme celui ci-dessous:Remplacement rapide des valeurs dans un tableau numpy
[ 0 1 6 5 1 2 7 6 2 3 8 7 3 4 9 8 5 6 11 10 6 7 12 11 7
8 13 12 8 9 14 13 10 11 16 15 11 12 17 16 12 13 18 17 13 14 19 18 15 16
21 20 16 17 22 21 17 18 23 22 18 19 24 23]
et une petite carte de dictionnaire pour remplacer certains des éléments en le tableau ci-dessus
{4: 0, 9: 5, 14: 10, 19: 15, 20: 0, 21: 1, 22: 2, 23: 3, 24: 0}
Je voudrais remplacer certains éléments selon la carte ci-dessus. Le tableau numpy est vraiment grand, et seulement un petit sous-ensemble des éléments (se produisant comme des clés dans le dictionnaire) sera remplacé par les valeurs correspondantes. Quel est le moyen le plus rapide de le faire?
'numpy.place' Je pense ... – katrielalex
L'itération comme' pour k in d' rendrait ceci aussi vite que possible' – jamylak
Un vote contre 'numpy.place' comme mentionné par @katrielalex, comme il a juste gaspillé une vingtaine de trente heures de mon temps en étant buggy; Apparemment, son utilisation est découragée. "Je suggère généralement d'utiliser' np.copyto' ou (dans ce cas) l'indexation booléenne de fantaisie pour obtenir la même chose et éviter 'np.place' ou' np.putmask' Je réalise que dans certains cas, ces fonctions ne sont pas tout à fait 1: 1 remplace par ceux-ci. " FWIW Je n'avais pas ce bug, mais un autre où il ne fonctionnait pas en silence. – ijoseph