目录

🐍Numpy 中神奇的切片

目录

为什么要写切片呢,因为当时看书学切片的时候,感觉这东西和 MATLAB 和 numpy 里面很像,就粗略的看了一下但没有仔细的深究,但每次用的时候都觉得需要查一下怎么用,尤其是 [:] 和 [: :],总是傻傻的分不清楚。

估计是太笨了。所以写篇笔记吧。…

首先我们知道 list[num] 可以直接索引列表,这个没什么可说的。

1
2
3
>>> colors=["red","blue","green"]
>>> colors[0]
'red' #返回元素

然后就是 [:] 的切片方式了,就是 list[start_index:end_index],这个时候就有点意思了。

要记住 [:] 和 [: :] 返回的都是列表,即使你只切了一个元素出来。

另外,end_index 取得是开集,也就是用数学语言描述其实取的是 [start_index,end_index),不清楚为什么要这么设计,这样设计也有好处 [0:7] 就可以直接表示取前七个元素,也可以简写成 [:7],同样 range(5) 就可以直接表示 5 个元素的迭代器了。

1
2
3
4
>>> b[:3]
[0, 1, 2]
>>> b[3:5]
[3, 4]

讲 [: :] 之前先看一个例子

1
2
3
>>> s = 'abcdefg'
>>> print(s[::-1])
    gfedcba

s[: : -1] 相当于翻转列表了,s[: : 1] 就相当于不变了。所以负数表示从尾开始切,正数表示从头开始切。

+1,-1,就是表示步进了,步进为 2 就是跳一个去一个,步进为 3 就是跳 2 个取一个。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
>>> print(s[::1])
    abcdefg
>>> print(s[::2])
    aceg
>>> print(s[::3])
    adg
>>> print(s[::4])
    ae
>>> print(s[::-2])
    geca

以上,不仅仅是列表如此。