gpt4 book ai didi

python - 从 python 列表中进行窗口选择

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:39 25 4
gpt4 key购买 nike

假设我有一个列表

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

我随机选择一个索引,

i = np.random.choice(np.arange(a.size))

现在,我想选择围绕 i 的某个大小的对称间隔,例如 2。因此,例如对于给定列表,如果选择索引 i = 5,我会得到类似的结果

print(a[i-2:i+2+1])
>> [3, 4, 5, 6, 7]

这很好用但是,如果 i 恰好靠近其中一个端点,则 i = 1。使用我所拥有的,

print(a[i-2:i+2+1])
>> []

相反,我想要它打印不对称间隔,例如 [0, 1, 2, 3]

如果我=8

print(a[i-2:i+2+1])
>> [6, 7, 8, 9]

就像我也想要它一样,所以接近终点似乎并不重要。我得到的最接近的解决方案是(假设 i = 1)

print([a[0:i+3] if a[i-2:i+2+1] == [] else a[i-2:i+2+1] ])
>> [[0, 1, 2, 3]]

但这会返回 [[0,1,2,3]] 而不是 [0,1,2,3]

有没有一种好的方法可以使用列表理解或其他方式在 python/numpy 中执行此操作?

最佳答案

您只需将较低的索引剪辑为零:

>>> print(a[max(i-2,0):i+2+1])
[0, 1, 2, 3]

如果没有这个,它可能会变成负数。这在切片中具有特殊含义:负索引从列表的末尾开始计数。

关于python - 从 python 列表中进行窗口选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54189052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com