python - 是否有一种python方式从列表或numpy数组中采样N个连续元素

标签 python numpy sample

有没有一种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,特别是islicecycle

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/

相关文章:

r - 从向量中为 data.table 的每一行选取一个随机元素

python - 在 Python 中根据已排序的词汇表有效匹配单词

python - Kivy - 通过 id 删除小部件

python - Tensorflow 在 jupyter 中设置 CUDA_VISIBLE_DEVICES

python - OS X 上的 matplotlib 安装不支持 64 位架构

java - 我怎样才能在java中转换这个xml文档?

python - 翼型剖面几何绘图

python - 为什么 a.dot(b) 比 a@b 快,尽管 Numpy 推荐 a@b

python - numpy.interp 和屏蔽数组

python - 对正在运行的 Python 应用程序进行采样