混合两个或多个随机组合成相同长度和形状的数组

时间:2019-06-13 17:05:01

标签: python arrays

是否有任何快速简便的方法来混合两个或多个随机组合为相同长度和形状的数组。

来自: [0,1,2,3]和[4,5,6,7]

例如: [4,1,2,7]

4 个答案:

答案 0 :(得分:2)

使用random模块:

import random

a = [1,2,3,4]
b = [5,6,7,8]

random.sample(a+b, len(a))

或:

c = a + b
random.shuffle(c)
c[:len(a)]

或者,如果您不介意重复:

[random.choice(a+b) for _ in range(len(a))]

答案 1 :(得分:0)

一种方法是将列表连接在一起并使用numpy.random.choice

a = [0,1,2,3] 
b = [4,5,6,7]

import numpy as np
np.random.seed(0)
print(np.random.choice(a+b, len(a), replace=False))
#[6 2 1 7]

或者,如果您随机需要每个数组中有2个元素,则可以执行以下操作:

np.random.seed(0)
c = np.concatenate(
    [np.random.choice(a, 2, replace=False), np.random.choice(b, 2, replace=False)]
)
print(c.tolist())
#[2, 3, 4, 6]

答案 2 :(得分:0)

假设我们有两个列表:

a=[0,1,2,3]
b=[4,5,6,7]

我们想采用长度与输入列表相同的a和b组合。

import random

def combo(a,b):
    c = a + b
    return [random.choice(c) for _ in range(len(a))]

print(combo(a,b))

我希望这会有所帮助。如果您有兴趣从每个集合中抽取偶数个元素,则该函数有些不同,但易于修改。

答案 3 :(得分:-1)

您可以使用 numpy 库。

import numpy as np

a = np.array([1,2,3,4])
b = np.array([5,6,7,8])

print(a+b)  # [6,8,10,12]

使用numpy,您可以添加多个数组。

  

请记住,数组的大小应该相同。