import numpy as np
a = np.array([2,4,6])
b = a
b = b/2
print(b) # [1,2,3]
print(a) # [2,4,6]
import numpy as np
a = np.array([2,4,6])
b = a
b /= 2
print(b) # [1,2,3]
print(a) # [1,2,3]
以上两段代码唯一的不同之处就在于b=b/2
和b/=2
,因为C++的思想影响,总觉得/=
和/
是等价的:
- 实际上在numpy中,
+=
、/=
等符号类似于一个被重载过的运算符,含义是对numpy中的每一个元素进行+=
的操作,操作完成后b的id值没有变,指向的还是同一块内存,而内存中的内容变了 - 先
+
再赋值的含义则是很清晰的,相当于开辟一块内存进行加法操作,而后赋值给b,赋值后b的内存地址已经变了,它的值和a再也没有关系了