对于切片总是一知半解,用到时总会卡住,故作文一篇。
[:]格式
[x=0:y]
x默认为0,表示从第一个数字(下标为0)开始,y默认为结尾,直到y(下标为y-1)结束,故截取第一到第y-1个数据。
import numpy as np
a=np.random.rand(5)
print(a)
print(a[:2])
[0.61494439 0.99290849 0.9869453 0.0821504 0.13804502]
[0.61494439 0.99290849]
[::]格式
[x=0:y:z=1]
z默认为1,表示间隔为|z|-1。
import numpy as np
a=np.random.rand(5)
print(a)
print(a[::2])
[0.47971577 0.84048377 0.63187542 0.50429043 0.29835274]
[0.47971577 0.63187542 0.29835274]
z=-1,表示间隔为0,但由于是负数,故从末位读起。
import numpy as np
a=np.random.rand(5)
print(a)
print(a[::-1])
[0.76323649 0.35310959 0.1707775 0.23204241 0.53846145]
[0.53846145 0.23204241 0.1707775 0.35310959 0.76323649]
将z改为-2,间隔为1,也是从末位读起。
[0.2483159 0.7683867 0.22377107 0.10587434 0.24032022]
[0.24032022 0.22377107 0.2483159 ]
在加上x=2
import numpy as np
a=np.random.rand(6)
print(a)
print(a[2::-2])
[0.19075475 0.81109042 0.67671804 0.26137435 0.72912879 0.67888605]
[0.67671804 0.19075475]
从下标为2开始,因为z=-2,所以系统从右到左判断,间隔为1
故读取了第三位然后再读取了第一位
考试时考了这个,可惜当初没搞懂
2022.7.4