You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教这段Numpy切片代码的语法含义及官方文档依据

问题:Numpy切片[:, :-1]和[:, -1]的含义及官方说明

现有一段Python代码如下:

# split into inputs and outputs

X, y = data[:, :-1], data[:, -1]

print(X.shape, y.shape)

已知这是基于Numpy的切片操作,处理的data数组形状为(610, 14)。我了解这属于切片操作,但找不到":-1"写法的相关文档参考,恳请解释第二行代码并给出对应的官方文档内容。


代码解释

针对形状为(610, 14)的二维Numpy数组data,该行代码的作用是将数组拆分为输入特征集X和目标变量集y:

  • data[:, :-1]:
    • 第一个:表示选取所有行(保留全部610行);
    • :-1是列维度的切片,代表从第0列开始,到倒数第2列结束(切片遵循左闭右开规则,-1指向最后一列,因此不会包含最后一列)。最终得到形状为(610, 13)的二维数组,作为输入特征赋值给X。
  • data[:, -1]:
    • 第一个:同样选取所有行;
    • -1是列维度的负索引,直接指向最后一列,最终得到形状为(610,)的一维数组,作为目标变量赋值给y。

执行代码后,print(X.shape, y.shape)会输出(610, 13) (610,)。

官方文档相关说明

Numpy的切片规则延续了Python序列切片逻辑,并针对多维数组做了扩展:

  • 负索引机制:负整数索引从数组末尾反向计数,-1对应最后一个元素,-2对应倒数第二个元素,以此类推。
  • 切片语法:切片的完整格式为start:stop:step,省略start时默认从索引0开始;省略stop时默认到数组末尾;省略step时默认步长为1。:-1等价于0:-1:1,即从开头取到倒数第一个元素的前一位。
  • 多维数组切片:多维数组通过逗号分隔不同维度的切片规则,每个维度独立应用切片逻辑,比如[:, ...]中的逗号明确区分行维度和列维度的选取规则。

内容的提问来源于stack exchange,提问作者Purab Bajaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:35:18