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

2024-04-26 11:21:58 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有简单快捷的方法将两个或多个随机组合成一个长度和形状相同的数组。你知道吗

发件人: [0,1,2,3]和[4,5,6,7]

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


Tags: 方法数组形状
3条回答

假设我们有两个列表:

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))

我希望这有帮助。如果您对从每个集合中获取偶数个元素感兴趣,那么函数有点不同,但很容易修改。你知道吗

使用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))]

一种方法是将列表串联在一起并使用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]

相关问题 更多 >