使用python对数组进行洗牌的最简单方法是什么?
import random random.shuffle(array)
import random random.shuffle(array)
使用sklearn执行此操作的替代方法
from sklearn.utils import shuffle X=[1,2,3] y = ['one', 'two', 'three'] X, y = shuffle(X, y, random_state=0) print(X) print(y)
输出:
[2, 1, 3] ['two', 'one', 'three']
优点:您可以在不中断映射的情况下同时随机连接多个阵列.并且'random_state'可以控制混洗以获得可重现的行为.
其他答案是最简单的,但是这个random.shuffle
方法实际上没有返回任何内容有点烦人- 它只是对给定的列表进行排序.如果你想链接调用或只是能够在一行中声明一个混洗数组,你可以这样做:
import random def my_shuffle(array): random.shuffle(array) return array
然后你可以做如下行:
for suit in my_shuffle(['hearts', 'spades', 'clubs', 'diamonds']):
在处理常规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
就地将阵列洗牌一样.
如果你想要一个新阵列,你可以使用sample
:
import random new_array = random.sample( array, len(array) )