前提
[0, 1, 2, 3, 4]
: 初期状態0番目
と2番目
を交換[2, 1, 0, 3, 4]
0番目
と4番目
を交換[4, 1, 0, 3, 2]
← これがほしい
誰でも思いつきそうな方法
for
ループで回すだけです
python
1import numpy as np 2 3arr = np.arange(5) 4x1 = np.array([0, 0]) 5x2 = np.array([2, 4]) 6 7# arr[x1], arr[x2] = arr[x2], arr[x1] # test1 8for e1, e2 in zip(x1, x2): # test2 9 arr[e1], arr[e2] = arr[e2], arr[e1] 10 11print(arr) 12
しかし、速度の面から、for
ループは使いたくありません(説明のために簡単な例にしました)
for
ループは使わずに、かつ上記**前提**が実現できる方法を教えてください
試したこと
test1 とコメントしてある行の
arr[x1], arr[x2] = arr[x2], arr[x1]
です
出力は
[4 1 0 3 0]
となり、0
が増えてしまいました
理由も納得できます
バージョン
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/16 06:07