Fork me on GitHub

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 2018-05-11 11:38  虚生  阅读(689)  评论(0编辑  收藏  举报