Python NumPy数组索引与切片详解:从一维到多维实战
本文详细介绍Python中NumPy库的数组索引与切片操作方法。内容涵盖一维、二维及多维数组的索引获取与切片截取技巧,通过具体代码示例解析正负索引、步长设置及高级索引用法,帮助开发者高效处理数值计算任务。
NumPy简介
NumPy是Python的一个核心扩展包,全称为“Numeric Python”。该库主要包含一个强大的多维数组对象以及大量用于高效处理这些数组的例程集合。
NumPy的前身是Numeric,由Jim Hugunin开发。随后出现了另一个名为Numarray的包,具备更多额外功能。2005年,Travis Oliphant将Numarray的功能整合进Numeric包中,从而创建了NumPy。这一开源项目吸引了众多贡献者共同参与开发。
NumPy功能概述
借助NumPy库,开发人员可以执行多种数值计算任务,主要包括:
• 执行数组的算术运算和逻辑运算。
• 进行傅立叶变换以及处理图形操作的例程。
• 执行线性代数相关操作。NumPy内置了线性代数和随机数生成的函数库。
NumPy中的多维数组类型与Python列表类型在结构上非常相似,两者均支持索引和切片功能:
索引:指从数组中获取特定位置元素的操作过程。
切片:指从数组中获取元素子集的操作过程。
1. 一维数组操作
# 准备一个数组 arr1=np.array(np.arange(9)) arr1
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
# 索引 arr[-1] #8 arr1[arr1.size-2] #7 arr1[arr1.size-9] #0 # 切片 :[start:end:step] arr1[1:4] #左开右闭的区间 arr1[1:5:2] #array([1,3]) arr1[::-1] # 反向取所有,-1变成了步长
2. 二维数组操作
# 准备一个二维数组 arr2=np.array([ np.arange(1,4), np.arange(5,8) ]) arr2 array([[1, 2, 3], [5, 6, 7]]) # 索引 arr2[0][2] # 3 arr2[0,2] # 3 # 切片 arr2[0,] # array([1,2,3]) arr2[0,::] # 同上 arr2[0,0:3] #array([1,2])
3. 多维数组操作
arr4=np.arange(1,25).reshape(2,3,4) arr4 array([[[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12]], [[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]]]) arr4[1][2][2] # 23 arr4[1,1,1] #18 arr3[1,1,] # array([17,18,19,20]) arr4[1,1,::] # 同上 arr4[1,1,::-1] # array([20, 19, 18, 17]) arr4[0,1:3] #array([[ 5, 6, 7, 8], #[ 9, 10, 11, 12]]) arr4[:1,1] #array([ 6, 18]) b[1,:,2] #array([15, 19, 23]) b[1,...] #array([[13, 14, 15, 16], # [17, 18, 19, 20], # [21, 22, 23, 24]]) b[0,::-1,-1] #array([12, 8, 4]) b[:,:,-1][::-1][:,-1] #array([24, 12])
总结
以上内容介绍了Python NumPy数组的索引与切片操作方法,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









