创建数组功能
- array
#创建数组
a = np.array([[1,2,3],[4,5,6]])
a_1 = np.array(a)
>>>array([[1, 2, 3],
[4, 5, 6]]
- asarray
#创建数组
a = np.array([[1,2,3],[4,5,6]])
a_2 = np.asarray(a)
>>>array([[1, 2, 3],
[4, 5, 6]])
结论:
两者在创建数组功能上基本相同
改变或是赋值时
- array
#修改数组中的一个值,看两种生成方式的不同
a[0,0] = 1000
>>>array([[1000, 2, 3],
[ 4, 5, 6]])
>>>a_1
>>>array([[1, 2, 3],
[4, 5, 6]])
由输出可以看出,a_1并没有改变。
- asarray
#修改数组中的一个值,看两种生成方式的不同
a[0,0] = 1000
>>>array([[1000, 2, 3],
[ 4, 5, 6]])
>>>a_2
>>>array([[1000, 2, 3],
[ 4, 5, 6]])
由输出可以看出,a_2发生改变
结论:
- array为深拷贝
- asarray为浅拷贝
深拷贝和浅拷贝:(摘录于百度和csdn)
深拷贝和浅拷贝是针对对象属性为对象的,因为基本数据类型在进行赋值操作时(也就是拷贝)是直接将值赋给了新的变量,也就是该变量是原变量的一个副本,这个时候你修改两者中的任何一个的值都不会影响另一个,而对于对象或者引用数据来说在进行浅拷贝时,只是将对象的引用复制了一份,也就内存地址,即两个不同的变量指向了同一个内存地址,那么在改变任一个变量的值都是该变这个内存地址的所存储的值,所以两个变量的值都会改变。