有没有一种pythonic的方法从列表或numpy数组中选择N个连续的元素。
因此,假设:
Choice = [1,2,3,4,5,6]
我想通过随机选择Choice中的元素X以及选择之后的N-1个连续元素来创建长度为N的新列表。因此,如果:
X = 4
N = 4
结果列表将是:Selection = [5,6,1,2]
我认为类似以下内容的方法会起作用。S = []
for i in range(X,X+N):
S.append(Selection[i%6])
但是我想知道是否有一个python或numpy函数可以立即选择元素,这样效率更高。
最佳答案
使用itertools
,特别是islice
和cycle
。
start = random.randint(0, len(Choice) - 1)
list(islice(cycle(Choice), start, start + n))
cycle(Choice)
是重复原始列表的无限序列,因此切片start:start + n
会在必要时进行换行。
关于python - 是否有一种python方式从列表或numpy数组中采样N个连续元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65912024/