用python洗牌数组最简单的方法是什么?
当前回答
# 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)
另一种方法是使用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(),但它返回'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
除了前面的回复,我想介绍另一个功能。
numpy。random。shuffle和random。进行原地洗牌。但是,如果你想返回一个打乱的数组,可以使用numpy.random.permutation函数。
如果你想要一个新的数组,你可以使用sample:
import random
new_array = random.sample( array, len(array) )
推荐文章
- Python中的“@=”符号是什么意思?
- read_csv . pandas中的Datetime dtypes
- 在argparse中使用破折号
- 典型的AngularJS工作流程和项目结构(使用Python Flask)
- “str”对象不支持项赋值
- Python中exit(0)和exit(1)的区别
- 从URL中获取参数
- 在python中插入一个列表到另一个列表的语法是什么?
- Python中的最大浮点数是多少?
- Java整数到字节数组
- 将一个列表分成大约相等长度的N个部分
- Python __str__与__unicode__
- 随机字符串生成器返回相同的字符串
- 在python中,del和delattr哪个更好?
- 如何动态加载Python类