其实这个就像是C++中传参数是直接复制和引用的区别。
np.array是复制,
np.asarray是引用
//C++代码
void fun1(int a)
{a = 3;};
//类似于np.array,调用时会开辟新的内存来存储
void fun2(int &a)
{a = 3;};
//类似于np.asarray,调用时是引用,并不开辟新的内存
int main(){
int x = 4,y = 4;
fun1(x);fun2(y);
print("%d",x);//输出结果是4
print("%d",y);//输出结果是3
return 0;
}
#python代码
import numpy as np
arr1=np.ones((3,3))
arr2=np.array(arr1)
arr3=np.asarray(arr1)
arr1[1]=2
print 'arr1:\n',arr1
print 'arr2:\n',arr2
print 'arr3:\n',arr3
##
arr1:
[[ 1. 1. 1.]
[ 2. 2. 2.]
[ 1. 1. 1.]]
arr2:
[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]
arr3:
[[ 1. 1. 1.]
[ 2. 2. 2.]
[ 1. 1. 1.]]
##