Pythonで配列をシャッフルする最も簡単な方法は何ですか?
273427 次
11 に答える
567
import random
random.shuffle(array)
于 2009-01-23T18:37:27.630 に答える
111
import random
random.shuffle(array)
于 2009-01-23T18:38:14.663 に答える
21
random.shuffle
他の答えは最も簡単ですが、メソッドが実際には何も返さないのは少し面倒です。指定されたリストをソートするだけです。呼び出しを連鎖させたい場合、またはシャッフルされた配列を1行で宣言できるようにしたい場合は、次のことができます。
import random
def my_shuffle(array):
random.shuffle(array)
return array
次に、次のような行を実行できます。
for suit in my_shuffle(['hearts', 'spades', 'clubs', 'diamonds']):
于 2011-12-20T22:05:30.333 に答える
12
通常の Python リストを扱う場合random.shuffle()
、前の回答が示すように機能します。
しかし、ndarray
( numpy.array
) にrandom.shuffle
なると元の を破るようndarray
です。次に例を示します。
import random
import numpy as np
import numpy.random
a = np.array([1,2,3,4,5,6])
a.shape = (3,2)
print a
random.shuffle(a) # a will definitely be destroyed
print a
使用するだけです:np.random.shuffle(a)
のように、配列をその場random.shuffle
でnp.random.shuffle
シャッフルします。
于 2013-10-28T09:23:27.887 に答える
8
ランダムキーで配列をソートできます
sorted(array, key = lambda x: random.random())
キーは一度だけ読み取られるため、ソート中のアイテムの比較は依然として効率的です。
random.shuffle(array)
ただし、Cで記述されているため、高速になるように見えます
これは O(log(N)) ところで
于 2018-09-21T18:37:26.350 に答える