切片
冒号 :
- 一维数组
- 如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。
- 如果为 [2:],表示从该索引开始以后的所有项都将被提取。
- 如果使用了两个参数,如 [2:8],那么则提取两个索引(不包括停止索引)之间的项
- 多维数组
多维数组索引结果可能会同样是一个多维数组
数组切片不会复制内部数组数据生成一个副本,只会生成原始数据的新视图,这点与 python 不同。
视图:当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。
python的 list 的切片返回是原数据的副本,即开辟了一个新的内存地址储存数据,因此修改切片出来的结果,原数据并不会发生改变。
而numpy 以效率为主,所以 numpy 的切片返回的是原数据的视图,即不会创建新的内存地址,而是对原数据内存地址的引用。所以对numpy 切片结果进行修改会发现,原数据也一起发生了改变。
注意:numpy 中所有的运算操作符都不会为数组创建副本
参考
Python中numpy数组切片:print(a[0::2])、a[::2]、[:,2]、[1:,-1:]、a[::-1]、[ : n]、[m : ]、[-1]、[:-1]、[1:]等的含义(详细)
numpy数组切片操作之[:,2]、[-1:,0:2]、[1:,-1:]等都是啥?
关于Numpy数组切片的整理与思考