今天在做cs231n关于forward/backward的作业时,一个bug找了很久,原因是我利用A来初始化B,并对B进行修改,结果发现A变了。代码如下
B = A
B[A>0]=0
#结果发现A也被改变了
本质原因是因为两个对象指向同一快内存,那该怎么解决呢?
第一种思路就是使用deepcopy,但是还要调用copy库
第二种方式是为B开辟一块新的内存,并在之后复制A的值
B = np.zeros_like(A)
B[:] = A
#A和B值相同,并有两个独立内存
注意,如果使用 B=A这种代码,B还是会指向A的内存。。。