用python洗牌数组最简单的方法是什么?
当前回答
import random
random.shuffle(array)
其他回答
除了前面的回复,我想介绍另一个功能。
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
当处理常规的Python列表时,random.shuffle()将完成工作,就像前面的答案所显示的那样。
但当涉及到ndarray(numpy.array)时,随机。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)
像随机的。Shuffle, np.random.shuffle原地打乱数组。
如果你想要一个新的数组,你可以使用sample:
import random
new_array = random.sample( array, len(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'可以控制可复制行为的变换。
推荐文章
- Python glob多个文件类型
- 如何可靠地打开与当前运行脚本在同一目录下的文件
- Python csv字符串到数组
- 如何在Python中进行热编码?
- 如何嵌入HTML到IPython输出?
- 在Python生成器上使用“send”函数的目的是什么?
- 是否可以将已编译的.pyc文件反编译为.py文件?
- Django模型表单对象的自动创建日期
- 在Python中包装长行
- 如何计算两个时间串之间的时间间隔
- 我如何才能找到一个Python函数的参数的数量?
- 您可以使用生成器函数来做什么?
- 将Python诗歌与Docker集成
- 提取和保存视频帧
- 使用请求包时出现SSL InsecurePlatform错误