用python洗牌数组最简单的方法是什么?


当前回答

除了前面的回复,我想介绍另一个功能。

numpy。random。shuffle和random。进行原地洗牌。但是,如果你想返回一个打乱的数组,可以使用numpy.random.permutation函数。

其他回答

我不知道我使用了random。shuffle(),但它返回'None'给我,所以我写了这个,可能对别人有帮助

def shuffle(arr):
    for n in range(len(arr) - 1):
        rnd = random.randint(0, (len(arr) - 1))
        val1 = arr[rnd]
        val2 = arr[rnd - 1]

        arr[rnd - 1] = val1
        arr[rnd] = val2

    return arr
# arr = numpy array to shuffle

def shuffle(arr):
    a = numpy.arange(len(arr))
    b = numpy.empty(1)
    for i in range(len(arr)):
        sel = numpy.random.random_integers(0, high=len(a)-1, size=1)
        b = numpy.append(b, a[sel])
        a = numpy.delete(a, sel)
    b = b[1:].astype(int)
    return arr[b]
import random
random.shuffle(array)

如果你想要一个新的数组,你可以使用sample:

import random
new_array = random.sample( array, len(array) )

除了前面的回复,我想介绍另一个功能。

numpy。random。shuffle和random。进行原地洗牌。但是,如果你想返回一个打乱的数组,可以使用numpy.random.permutation函数。