slice函数的核心优势
2026/5/28 19:11:03 网站建设 项目流程

slice()函数在 NumPy 中的计算逻辑,核心就是“按步长在数组上跳格子”

它的计算规则完全由三个参数决定:start(起点)、stop(终点)、step(步长)。你可以把它想象成在一条数字线上玩跳棋。

核心计算规则

slice(start, stop, step)会生成一个索引序列,规则如下:

  1. 起点:从start这个索引位置开始。
  2. 步长:每次增加step
  3. 终点:当索引值达到或越过stop时停止(不包含stop本身)。

一维数组的“跳格子”演示

假设有一个数组a = np.array(),我们来看几个例子:

例1:slice(2, 7, 2)a[2:7:2]
  • 计算过程
    1. 起点:索引2→ 元素2
    2. 步长 +2:索引4→ 元素4
    3. 步长 +2:索引6→ 元素6
    4. 步长 +2:索引8注意8已经 >=stop(7) 了,所以停止。
  • 结果:``
例2:slice(5)a[:5]
  • 计算过程start默认为0step默认为1
    1. 起点:索引0→ 元素0
    2. 步长 +1:索引1→ 元素1
    3. …直到索引4→ 元素4
    4. 步长 +1:索引5注意5已经 >=stop(5) 了,所以停止。
  • 结果:``
例3:slice(2, 9, 3)a[2:9:3]
  • 计算过程
    1. 起点:索引2→ 元素2
    2. 步长 +3:索引5→ 元素5
    3. 步长 +3:索引8→ 元素8
    4. 步长 +3:索引11注意11已经 >=stop(9) 了,所以停止。
  • 结果:``

多维数组的“坐标切片”

对于二维数组,计算逻辑是一样的,只是变成了同时控制行和列两个维度

假设有一个二维数组a

a=np.array([,,])
例4:a[1:, :2]
  • 计算过程
    • 行维度1::从第1行开始,取到最后 → 行索引 ``
    • 列维度:2:从第0列开始,取到第2列(不包含)→ 列索引 ``
  • 结果:取行索引和列索引交汇处的元素。
    • 1,列04
    • 1,列15
    • 2,列07
    • 2,列18
  • 最终输出
    [,]

特殊情况:负步长(反向切片)

step为负数时,计算方向会反转,从右向左“跳格子”。

例5:a[::-1]
  • 计算过程start默认为-1(最后一个元素),stop默认为-len(a)-1(第一个元素之前),step-1
    1. 起点:索引-1→ 元素9
    2. 步长 -1:索引-2→ 元素8
    3. …直到索引0→ 元素0
  • 结果:``(数组被反转了)

总结

slice()的计算逻辑可以用一句话概括:

start出发,以step为步长,向stop方向“跳格子”,跳到stop面前就停,stop本身不取。

  • step > 0:从左向右跳。
  • step < 0:从右向左跳。
  • startstop省略:默认走到数组的“头”或“尾”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询