使用变量描述数组/列表索引的索引范围/切片

问题描述 投票:1回答:1

我想使用使用名称来引用数组/列表索引的索引范围。另外,我希望能够对此进行算术运算。例如,我想做

myrange = 3:10
myrange2 = myrange + 5
arr2[myrange2] = arr1[myrange]  # This being equivalent to arr2[8:15] = arr1[3:10] 

python列表和numpy数组可能吗?

python numpy indexing slice
1个回答
1
投票

您可以简单地使用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__方法。


0
投票

您可以使用slice

a = slice(1,3)
'hello'[a] -> ell

您可以通过a.start / a.stop / a.step访问属性。这些属性是只读的,但是您可以根据其算法要求从它们中创建一个新的切片

© www.soinside.com 2019 - 2024. All rights reserved.