python代码,如何使用两个冒号获取numpy变量的切片数据?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
python
代码里面,是可以通过冒号操作对numpy
数据进行切片操作的。通常使用一个冒号进行切片操作,实际上还可以使用两个冒号进行类似的操作。这就是本文要讨论的主要内容。如何理解两个连续冒号操作呢?
苏南大叔的“程序如此灵动”博客,记录苏南大叔和计算机代码的故事。本文测试环境:win10
,python@3.12.0
。
龙套数据
import numpy as np
x = np.arange(0,5) # [0 1 2 3 4]
# x = np.array([0,1,2,3,4]) # [0 1 2 3 4]
arrange()
的用法,请参考:
通常情况下,是使用一个冒号[start:end]
来对其进行切片操作的,数据范围是:[start,end)
。比如:
y = x[:] # [0 1 2 3 4]
y = x[0:2] # [0 1]
y = x[::] # [0 1 2 3 4]
如何理解使用两个冒号的用法呢?其实用法是[start:end:step]
,数据范围依然是:[start,end)
。
仅仅指定step
省略了start
和end
,如果取负数,就从后面开始。【注意:x[::-1]
的实际效果是把x
数据逆转了】
s1 = x[::1] # [0 1 2 3 4]
s2 = x[::-1] # [4 3 2 1 0]
print(s1,type(s1))
print(s2,type(s2))
输出:
[0 1 2 3 4] <class 'numpy.ndarray'>
[4 3 2 1 0] <class 'numpy.ndarray'>
步长step
换个试试看:
s3 = x[::2] # [0 2 4]
s4 = x[::-2] # [4 2 0]
输出:
[0 2 4]
[4 2 0]
指定三个参数(双重范围)
下面的代码,表明:结束end
值是可以大于或者小于实际的主题的值的。【效果上就是设置了两遍范围】不会报错。
s6 = x[0:4:1] # [0 1 2 3]
s7 = x[0:4:2] # [0 2]
s8 = x[1:4:2] # [1 3]
s6 = x[0:5:1] # [0 1 2 3 4]
s7 = x[0:5:2] # [0 2 4]
s8 = x[1:5:2] # [1 3]
s6 = x[0:6:1] # [0 1 2 3 4]
s7 = x[0:6:2] # [0 2 4]
s8 = x[1:6:2] # [1 3]
双冒号索引范围
下面的代码表明:
.arrange()
中,start
和end
是实际数值。::
中,start
和end
是索引值。
import numpy as np
x = np.arange(3,9) # [3,9)=>[3 4 5 6 7 8]
s6 = x[0:6:1] # [0,6)步长1=>[3 4 5 6 7 8]
s7 = x[0:6:2] # [0,6)步长2=>索引[0,2,4)=>[3 5 7]
s8 = x[1:6:2] # [1,6)步长2=>索引[1,3,5)=>[4 6 8]
结语
更多苏南大叔的python
经验文章,请点击下面的链接:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。