我想使用使用名称来引用数组/列表索引的索引范围。另外,我希望能够对此进行算术运算。例如,我想做
myrange = 3:10
myrange2 = myrange + 5
arr2[myrange2] = arr1[myrange] # This being equivalent to arr2[8:15] = arr1[3:10]
python列表和numpy数组可能吗?
您可以简单地使用slice()
:
myrange = slice(3, 10)
myrange2 = slice(3 + 5, 10 + 5)
arr2[myrange2] = arr1[myrange]
这可以很容易地变成一个函数:
def add_to_slice(slice_, offset):
return slice(slice_.start + offset, slice_.stop + offset)
myrange = slice(3, 10)
myrange2 = add_to_slice(myrange, 5)
arr2[myrange2] = arr1[myrange]
如果要使用+
,则需要对其进行子类化并重写__add__
方法。
您可以使用slice
a = slice(1,3)
'hello'[a] -> ell
您可以通过a.start / a.stop / a.step访问属性。这些属性是只读的,但是您可以根据其算法要求从它们中创建一个新的切片