2.2 NumPy数组的切片和索引操作

导入 NumPy 库:

In [1]:

import numpy as np #导入NumPy库 
np.__version__ #打印numpy版本

Out[1]:

'1.24.2'

2.2: NumPy数组的切片和索引操作

NumPy数组ndarray对象的内容可以通过索引或切片来访问和修改。

  • NumPy数组索引操作是通过下标取某一个元素
  • NumPy数组切片操作是通过下标取某一段元素,即对操作的数组截取其中一部分生成新数组

Python字符串、列表、元组都支持切片操作。同样NumPy数组可以基于0-n的下标进行索引,可以通过内置的slice函数,并设置start,stop及step参数,从原数组中切割出一个新数组。

注意NumPy数组索引和切片的区别:

  • 索引是通过下标取某一个元素,会降维度。
  • 切片是通过下标取某一段元素,得到的结果仍然是数组,带有 冒号: 则表示对该维执行切片操作

2.2.1: 一维数组切片和索引操作

创建一个范围为[10,30),步长为1的一维数组,注意arange方法创建数组时,不包括第二个参数stop的值30,也就是包头不包尾。

In [2]:

arr2_1_1 = np.arange(10,30)
arr2_1_1

Out[2]:

array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
       27, 28, 29])

该数组包含的元素个数为:

In [3]:

arr2_1_1.size

Out[3]:

20

索引操作:

数组的下标也是从0开始计数,用整数0-19作为下标可以索引该数组中的某个元素:

通过数组下标2进行索引得到对应值12

In [4]:

arr2_1_1[2]  

Out[4]:

12

通过数组下标19进行索引得到对应最后一个值29

In [5]:

arr2_1_1[19]

Out[5]:

29

通过slice函数执行切片操作

slice()函数返回slice对象(切片),slice对象用于指定如何对切片对象进行裁剪。

语法: slice(start, end, step) 

In [6]:

s1 = slice(3,10,2)   # 从索引3开始到索引9停止,不包括结束位置的索引9,步长为2
arr2_1_1[s1]

Out[6]:

array([13, 15, 17, 19])

slice函数的第一个参数为起始索引下标,第二个参数为终止索引下标(但不包括),第三个参数为步长。 所以arr2_1[s1]表示从arr2_1[3]开始索引,步长为2,arr2_1[9]终止索引,但不包括arr2_1[9]。

更简洁的切片方式是,通过对数组用冒号分隔切片参数start:stop:step,形成数组名[start:stop:step]结构进行切片操作,同样是不包含下标stop的索引

In [7]:

arr2_1_1

Out[7]:

array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
       27, 28, 29])

In [8]:

arr2_1_1[3:9:2]  

Out[8]:

array([13, 15, 17])

arr2_1_1[3:9:2]表示从arr2_1_1[3]开始索引,步长为2,arr2_1_1[9]终止索引,但不包括arr2_1_1[9]。

其中的三个参数可以缺省:

  • 若start缺省,表示从下标0开始索引,结构为数组名[:stop:step]
  • 若stop缺省,表示索引到结束元素,结构为数组名[start::step]
  • 若step缺省,表示索引步长默认为1,结构为数组名[start:stop]
  • 若start和step缺省,表示从下标0开始索引,步长默认为1,结构为数组名[:stop]
  • 若stop和step缺省,表示索引到结束元素,步长默认为1,结构为数组名[start::]
  • 若start和stop缺省,表示从下标0开始索引到结束元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenos121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值