NumPy数组切片与索引详解:从基础到多维应用
本文详细介绍NumPy中ndarray对象的索引与切片机制。涵盖使用slice函数及冒号语法进行一维数组截取,包括start、stop、step参数的配置。深入解析多维数组的切片方法,如省略号...的使用及行列提取技巧,帮助开发者高效处理数据子集。
NumPy数组索引与切片基础
ndarray对象的内容可通过索引或切片方式访问和修改,其操作逻辑与Python内置list的切片行为保持一致。
ndarray数组支持基于0至n的下标索引。利用内置的slice函数,设定start、stop及step参数,可从原数组中提取并生成新数组。
import numpy as np
a = np.arange(10)
s = slice(2,7,2) # 从索引 2 开始到索引 7 停止,间隔为2
print (a[s])
代码执行后的输出结果如下:
[2 4 6]
上述示例中,首先利用arange()函数构建ndarray对象。随后,将起始、终止及步长参数分别设置为2、7和2。
此外,也可通过冒号分隔切片参数start:stop:step的形式执行切片操作:
使用冒号语法进行切片
import numpy as np
a = np.arange(10)
b = a[2:7:2] # 从索引 2 开始到索引 7 停止,间隔为 2
print(b)
代码执行后的输出结果如下:
[2 4 6]
冒号(:)在切片中的含义如下:若仅传入一个参数(如[2]),则返回对应索引的单个元素;若使用[2:],表示提取从该索引开始至末尾的所有元素;若传入两个参数(如[2:7]),则提取从起始索引到停止索引(不含停止索引)之间的元素。
import numpy as np
a = np.arange(10) # [0 1 2 3 4 5 6 7 8 9]
b = a[5]
print(b)
代码执行后的输出结果如下:
5
import numpy as np
a = np.arange(10)
print(a[2:])
代码执行后的输出结果如下:
[2 3 4 5 6 7 8 9]
import numpy as np
a = np.arange(10) # [0 1 2 3 4 5 6 7 8 9]
print(a[2:5])
代码执行后的输出结果如下:
[2 3 4]
上述索引提取方法同样适用于多维数组:
多维数组的切片与省略号应用
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a)
# 从某个索引处开始切割
print('从数组索引 a[1:] 处开始切割')
print(a[1:])
代码执行后的输出结果如下:
[[1 2 3] [3 4 5] [4 5 6]] 从数组索引 a[1:] 处开始切割 [[3 4 5] [4 5 6]]
切片操作中还可包含省略号(...),以使选择元组的长度与数组维度相匹配。若在行位置使用省略号,将返回包含该行元素的ndarray。
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print (a[...,1]) # 第2列元素
print (a[1,...]) # 第2行元素
print (a[...,1:]) # 第2列及剩下的所有元素
代码执行后的输出结果如下:
[2 4 5] [3 4 5] [[2 3] [4 5] [5 6]]
以上为NumPy切片与索引的完整解析,更多相关技术内容可参考本站其他文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









