我必须将 Python 列表/numpy 数组从索引切片到 -dx 和 +dx。 其中 dx 是常数。例如: (包含1的位置/索引仅用于说明,作为中心索引)。
A = [0, 0, 0, 0, 1, 0, 0, 0, 0]
dx=3
print(A[4-dx: 4+dx+1]) # 4 is the position of '1'
>>>[0, 0, 0, 1, 0, 0, 0]
但是对于这种情况,
B = [0, 1, 0, 0, 0 ,0, 0 ,0, 0]
print(B[1-dx: 1+dx+1])
>>>[] # because 1-dx <0.
但我需要从案例 B 中得到 [0, 1, 0, 0, 0]
所以我做了这样的事情,以防止空列表/数组,说 n
是中心索引:
if n-dx <0:
result= B[:n+dx+1]
虽然上面的方法效果很好。
原始代码相当复杂,我不得不把这个if...#complicated version#
放在任何地方。
还有其他办法吗?也许我错过了什么。
谢谢!
答案 0 :(得分:1)
您可以使用 max()
函数将索引绑定到 0
。
print(A[max(0,4-dx): 4+dx+1])