Numpy学习|array和asarray区别

本文探讨了numpy中array和asarray函数在创建数组时的相似性和在修改数组值时的区别。在创建时,两者都能生成二维数组。然而,当尝试修改数组元素时,array创建的是深拷贝,改变原数组不会影响副本;而asarray创建的是浅拷贝,修改原数组会导致副本也发生改变。理解这两者在内存管理上的差异对于高效编程至关重要。
摘要由CSDN通过智能技术生成

创建数组功能

  • 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)

深拷贝和浅拷贝是针对对象属性为对象的,因为基本数据类型在进行赋值操作时(也就是拷贝)是直接将值赋给了新的变量,也就是该变量是原变量的一个副本,这个时候你修改两者中的任何一个的值都不会影响另一个,而对于对象或者引用数据来说在进行浅拷贝时,只是将对象的引用复制了一份,也就内存地址,即两个不同的变量指向了同一个内存地址,那么在改变任一个变量的值都是该变这个内存地址的所存储的值,所以两个变量的值都会改变。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zzztutu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值