web-dev-qa-db-fra.com

Échangez deux valeurs dans un tableau numpy.

Y a-t-il quelque chose de plus efficace que le code suivant pour échanger deux valeurs d'un tableau numpy 1D?

input_seq = arange(64)

ix1 = randint(len(input_seq))
ixs2 = randint(len(input_seq))

temp = input_seq[ix2]
input_seq[ix2] = input_seq[ix1] 
input_seq[ix1] = temp
19
Gioelelm

Vous pouvez utiliser le déballage Tuple. Le décompactage de tuple vous permet d'éviter l'utilisation d'une variable temporaire dans votre code (en fait, je crois que le code Python lui-même utilise une variable temporaire en arrière-plan, mais c'est à un niveau beaucoup plus bas et ainsi est beaucoup plus rapide).

input_seq[ix1], input_seq[ix2] = input_seq[ix2], input_seq[ix1]

J'ai signalé cette question en double, la réponse dans le post dupe a beaucoup plus de détails.

26
Ffisegydd

Je vois que vous utilisez des tableaux numpy. Dans ce cas, vous pouvez également procéder comme suit:

input_seq[[ix1, ix2]] = input_seq[[ix2, ix1]]
13
Lewistrick