web-dev-qa-db-ja.com

numpy配列の2つの値を交換します。

Numpy 1D配列の2つの値を交換するには、次のコードよりも効率的なものはありますか?

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

タプルの解凍を使用できます。タプルのアンパックにより、コードで一時変数を使用しないようにすることができます(実際には、Pythonコード自体が背後で一時変数を使用していると思いますが、はるかに低いレベルにあるため、はるかに高速です)。

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

私はこの質問に重複としてフラグを立てました、 重複投稿 の回答にはより詳細があります。

26
Ffisegydd

Numpy配列を使用しているようです。その場合、これを行うこともできます。

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