【发布时间】:2019-06-08 21:16:13
【问题描述】:
假设我有一个列表
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 = 1。使用我得到的,
print(a[i-2:i+2+1])
>> []
相反,我希望它打印一个不对称的间隔,例如[0, 1, 2, 3]
如果 i = 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 中使用列表推导或其他方法是否有很好的方法来做到这一点?
【问题讨论】: