用python随机排列数组,用python随机化数组项
什么是最简单的方法用python洗牌数组?
import random random.shuffle(array)
import random random.shuffle(array)
其他的答案是最简单的,但是有点烦人的是, random.shuffle
方法实际上并不返回任何东西 – 它只是对给定的列表进行sorting。 如果你想连锁调用,或者只是能够在一行中声明一个混洗数组,你可以这样做:
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
在np.random.shuffle
洗牌。
使用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']
优点:您可以在不中断映射的情况下同时随机select多个arrays。 而'random_state'可以控制重排行为的混洗。
以防万一你想要一个新的数组,你可以使用示例:
import random new_array = random.sample( array, len(array) )
除了以前的回复之外,我想介绍一下另一个function。
numpy.random.shuffle
以及random.shuffle
执行就地洗牌。 但是,如果你想返回一个洗牌数组, numpy.random.permutation
是要使用的函数。
我不知道我使用了random.shuffle()
但它返回“无”给我,所以我写这个,可能对某人有帮助
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
- 渲染问题在渲染过程中引发exception:com.android.ide.common.rendering.api.LayoutlibCallback
- Android:允许肖像和风景的平板电脑,但强迫在手机上的肖像?