我想知道如何重复列表中的每个元素任意次,例如
l = ['a', 'b', 'c']
l
中的重复元素会生成一个新列表,
n = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'c']
所以'a'被重复了3次,'b'被重复了一次,'c'被重复了两次。每个元素的重复次数由 numpy.random.poisson 决定,例如numpy.random.poisson(2)。
最佳答案
这是一种基于 NumPy 的矢量化方法,使用 np.repeat
创建一个数组 -
np.repeat(l, np.random.poisson([2]*len(l)))
如果您需要列表作为输出,请附加 .tolist()
那里 -
np.repeat(l, np.random.poisson([2]*len(l))).tolist()
如果您想为每个元素至少保留一个条目,请使用 np.random.poisson([2]*len(arr)).clip(min=1) 添加剪辑
.
关于python - 重复列表中的每个元素任意次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40421249/