Fork me on GitHub

随笔 - 997  文章 - 5  评论 - 181  阅读 - 300万 

array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会。

举例说明:

 

[python] view plain copy
 
  1. import numpy as np  
  2.   
  3. #example 1:  
  4. data1=[[1,1,1],[1,1,1],[1,1,1]]  
  5. arr2=np.array(data1)  
  6. arr3=np.asarray(data1)  
  7. data1[1][1]=2  
  8. print 'data1:\n',data1  
  9. print 'arr2:\n',arr2  
  10. print 'arr3:\n',arr3  


输出:

 

[python] view plain copy
 
  1. data1:  
  2. [[1, 1, 1], [1, 2, 1], [1, 1, 1]]  
  3. arr2:  
  4. [[1]  
  5.  [1]  
  6.  [1]]  
  7. arr3:  
  8. [[1]  
  9.  [1]  
  10.  [1]]  


可见array和asarray没有区别,都对元数据进行了复制。

 

[python] view plain copy
 
  1. import numpy as np  
  2.   
  3. #example 2:  
  4. arr1=np.ones((3,3))  
  5. arr2=np.array(arr1)  
  6. arr3=np.asarray(arr1)  
  7. arr1[1]=2  
  8. print 'arr1:\n',arr1  
  9. print 'arr2:\n',arr2  
  10. print 'arr3:\n',arr3  

 

输出:

 

[python] view plain copy
 
  1. arr1:  
  2. [[ 1.  1.  1.]  
  3.  [ 2.  2.  2.]  
  4.  [ 1.  1.  1.]]  
  5. arr2:  
  6. [[ 1.  1.  1.]  
  7.  [ 1.  1.  1.]  
  8.  [ 1.  1.  1.]]  
  9. arr3:  
  10. [[ 1.  1.  1.]  
  11.  [ 2.  2.  2.]  
  12.  [ 1.  1.  1.]]  


此时两者才表现出区别

posted on   虚生  阅读(692)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示