|
详解numpy库ndarray对象的切片操作(三帽号规则)
ndarray对象切片操作的规叫做“三帽号规则”
三帽号规则的格式如下:
[开始索引:结尾索引:步长]
说明:
①
切片区间是左闭右开的,即“开始索引:结尾索引”表示的区间为[开始索引,结尾索引)。
②
三帽号规则中的三个参数既可为正,也可为负。
③
当“开始索引”不填写时表示从这个维度的第0个元素开始;
当“结尾索引”不填写时表示到这个维度的最后一个元素止。
当“步长”不填写时表示步长为1,此时可以省略掉结尾索引与步长之间的冒号。
④
若“开始索引”和“结尾索引”为负时,则表示倒数的第几个元素,比如-1表示倒数的第1个元素
当步长为负数时,相当于从后往前进行切片操作,特殊的[::-1]表示作倒序操作。
示例如下:
- import numpy as np
- a = np.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, 25]], dtype='float32')
- a_slice = a[0:2, 0:2]
- print('a_slice=\n{}'.format(a_slice))
复制代码
上面代码的运行结果如下:
- a_slice=
- [[1. 2.]
- [6. 7.]]
复制代码
从该运行结果可以看出,
切片操作“a_slice = a[0:2, 0:2]”把a的第0~1行和第0~1列的内容切片下来了,
注意是左闭右开区间,
所以并不是切取的第0~2行和第0~2列的内容。
改变切片范围如下:
运行结果如下:
- a_slice=
- [[ 6. 7.]
- [11. 12.]
- [16. 17.]
- [21. 22.]]
复制代码
再改变切片范围如下:
运行结果如下:
通过上面的叙述和例子相信大家就对ndarrya对象的切片操作有个详细的了解了。
|
|