Dav*_*d Z 440
import random
random.shuffle(array)
Run Code Online (Sandbox Code Playgroud)
Dou*_*der 107
import random
random.shuffle(array)
Run Code Online (Sandbox Code Playgroud)
Qy *_*Zuo 32
使用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)
Run Code Online (Sandbox Code Playgroud)
输出:
[2, 1, 3]
['two', 'one', 'three']
Run Code Online (Sandbox Code Playgroud)
优点:您可以在不中断映射的情况下同时随机连接多个阵列.并且'random_state'可以控制混洗以获得可重现的行为.
Mar*_*des 21
其他答案是最简单的,但是这个random.shuffle
方法实际上没有返回任何内容有点烦人- 它只是对给定的列表进行排序.如果你想链接调用或只是能够在一行中声明一个混洗数组,你可以这样做:
import random
def my_shuffle(array):
random.shuffle(array)
return array
Run Code Online (Sandbox Code Playgroud)
然后你可以做如下行:
for suit in my_shuffle(['hearts', 'spades', 'clubs', 'diamonds']):
Run Code Online (Sandbox Code Playgroud)
Shu*_*ang 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
Run Code Online (Sandbox Code Playgroud)
只需使用: np.random.shuffle(a)
就像random.shuffle
,np.random.shuffle
就地将阵列洗牌一样.
Cha*_*ker 10
如果你想要一个新阵列,你可以使用sample
:
import random
new_array = random.sample( array, len(array) )
Run Code Online (Sandbox Code Playgroud)
您可以使用随机键对数组进行排序
sorted(array, key = lambda x: random.random())
Run Code Online (Sandbox Code Playgroud)
键只能读取一次,因此在排序期间比较项目仍然有效。
但看起来random.shuffle(array)
会更快,因为它是用 C 编写的
这是 O(log(N)) 顺便说一句
除了前面的回复之外,我还想介绍一下另一个功能。
numpy.random.shuffle
以及random.shuffle
执行就地洗牌。但是,如果您想返回一个打乱数组,numpy.random.permutation
则需要使用该函数。
归档时间: |
|
查看次数: |
172215 次 |
最近记录: |