【发布时间】:2020-04-01 18:27:47
【问题描述】:
我想使用一个名称来引用数组/列表索引的索引范围。 另外,我希望能够对其进行算术运算。 比如我想做
myrange = 3:10
myrange2 = myrange + 5
arr2[myrange2] = arr1[myrange] # This being equivalent to arr2[8:15] = arr1[3:10]
myrange3 = myrange * 2 + 5
arr2[myrange3] = arr1[myrange] # This being equivalent to arr2[11:25] = arr1[3:10]
python 列表和 numpy 数组可以做到这一点吗?
【问题讨论】:
-
看起来很难,因为 slice 不是子类 stackoverflow.com/a/39971377/7207392。也使用 dunders
__int__或__index__似乎不起作用。 -
'm:n' 切片表示法仅适用于索引表达式。也就是说,它是一个 Python 语法特性。解释器将其转换为
slilce对象,并将其传递给__getitem__方法。切片对象本身非常简单,只有几个属性。np.s_和np.r_是特殊的numpy类实例,有助于生成和扩展切片。 -
@hpaulj - 我会尝试消化你的评论。同时,你会说我的问题的答案是Yes还是No? (我无法从评论中弄清楚这一点)。
-
不,您不能让 Python 解释器评估
myrange = 3:10。这是invalid syntax错误。 -
@hpaulj - 请查看答案中的方法......他们似乎表明这是可能的(通过不严格使用符号
3:10,但能够命名一个切片).. .
标签: python numpy indexing slice