我们都知道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值