我们都知道Python中数组和列表都是可以采用索引的方式来读取数据的,但是他们之间有一个很大的区别:
array的索引最终产生的是一个一个原始数据的浅拷贝,还和原来的数据共用一块儿内存,当改变索引的值时,原来array中的值也将相应改变,具体例子如下:
import numpy as np a=np.array([[1,1,0],[ 2,1,0],[ 4,3,0],[ 5,4,0]]) print('原来的a: ') print(a) b=a[0:2, :] print('原来的b:') print(b) b[ :,-1]=range(2,3) print('改变后b: ') print(b) print('a的值也将改变: ') print(a)
产生上面的原因是因为array中直接存放的数据,拷贝的话直接拿走的是pointer,没有取走数据
而list却会直接发生深拷贝,数据指针全部带走,改变索引值将不影响原来的list值