如何将Numpy切片范围定义为全局常量?
如何直接定义Numpy切片范围作为常量?
假设我们有以下Numpy代码:
import numpy as np z = np.array([1, 2, 3, 4, 5, 6])
在多处需要使用相同切片范围时,不想重复硬编码数值(比如z[2:4]中的2和4),希望直接定义一个代表该范围的常量,类似如下伪代码:
MY_CONSTANT_RANGE = 2:4 # 仅定义一次 print(z[MY_CONSTANT_RANGE])
是否存在这样的实现方式?比如用Numpy的range对象?
注:已知可以通过
RANGE_MIN, RANGE_MAX = 2, 4再写z[RANGE_MIN:RANGE_MAX]实现,但想知道是否有直接定义范围常量的方法。
解决方案:使用Python原生slice对象
Python的切片语法a:b:c本质是slice(a, b, c)的语法糖,你可以直接创建slice对象作为常量,Numpy数组完全支持用slice对象进行索引:
import numpy as np # 定义切片范围常量 MY_CONSTANT_RANGE = slice(2, 4) z = np.array([1, 2, 3, 4, 5, 6]) print(z[MY_CONSTANT_RANGE]) # 输出: [3 4]
如果需要包含步长,同样可以在slice中指定第三个参数:
MY_RANGE_WITH_STEP = slice(1, 6, 2) print(z[MY_RANGE_WITH_STEP]) # 输出: [2 4 6]
关于Numpy的range对象
np.arange()生成的是数值数组,并非切片范围,不能直接用于数组索引,因此不适合你的需求。slice对象才是直接对应切片范围的正确选择。
内容的提问来源于stack exchange,提问作者Basj
相关产品推荐
相关产品推荐

