昊虹AI笔记网

 找回密码
 立即注册
搜索
查看: 1129|回复: 0
收起左侧

详解numpy库ndarray对象的切片操作(三帽号规则)

[复制链接]

239

主题

241

帖子

928

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
928
昊虹君 发表于 2022-11-8 13:06 | 显示全部楼层 |阅读模式
详解numpy库ndarray对象的切片操作(三帽号规则)

ndarray对象切片操作的规叫做“三帽号规则”

三帽号规则的格式如下:
[开始索引:结尾索引:步长]
说明:

切片区间是左闭右开的,即“开始索引:结尾索引”表示的区间为[开始索引,结尾索引)。


三帽号规则中的三个参数既可为正,也可为负。


当“开始索引”不填写时表示从这个维度的第0个元素开始;
当“结尾索引”不填写时表示到这个维度的最后一个元素止。
当“步长”不填写时表示步长为1,此时可以省略掉结尾索引与步长之间的冒号。


若“开始索引”和“结尾索引”为负时,则表示倒数的第几个元素,比如-1表示倒数的第1个元素
当步长为负数时,相当于从后往前进行切片操作,特殊的[::-1]表示作倒序操作。

示例如下:
  1. import numpy as np
  2. a = np.array([[1, 2, 3, 4, 5],
  3.               [6, 7, 8, 9, 10],
  4.               [11, 12, 13, 14, 15],
  5.               [16, 17, 18, 19, 20],
  6.               [21, 22, 23, 24, 25]], dtype='float32')
  7. a_slice = a[0:2, 0:2]
  8. print('a_slice=\n{}'.format(a_slice))
复制代码

上面代码的运行结果如下:
  1. a_slice=
  2. [[1. 2.]
  3. [6. 7.]]
复制代码

从该运行结果可以看出,
切片操作“a_slice = a[0:2, 0:2]”把a的第0~1行和第0~1列的内容切片下来了,
注意是左闭右开区间,
所以并不是切取的第0~2行和第0~2列的内容。

改变切片范围如下:

运行结果如下:
  1. a_slice=
  2. [[ 6.  7.]
  3. [11. 12.]
  4. [16. 17.]
  5. [21. 22.]]
复制代码

再改变切片范围如下:

运行结果如下:


通过上面的叙述和例子相信大家就对ndarrya对象的切片操作有个详细的了解了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|昊虹AI笔记网 ( 蜀ICP备2022024117号-1 )

GMT+8, 2024-5-6 17:16 , Processed in 0.026670 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表