在这个小例子中,两个“res”变量给出了不同的结果。有人能解释这是为什么吗?我预计他们都会返回大约5
import numpy as np
import matplotlib.pyplot as plt
dist1 = np.random.normal(100., 10., 10000)
dist2 = np.random.normal(0.05, 0.005, 10000)
res1 = dist1
res1 *= dist2
res2 = dist1 * dist2
print np.median(res1)
print np.median(res2)
# 4.986893617080765
# 0.24957162692779786
res1 = dist1
不复制dist1
。您正在用*=
就地修改它,因此这是两种不同的操作使用
copy
复制数组:提示:python中的“变量”只是对象的名称(即引用)。它们不代表记忆位置。这样做:
您只需给名为
dist1
的对象赋予一个新名称,现在这个对象有两个名称(res1
和dist1
),并且两个名称都可以访问当对象是不可变的时,很难看到名称/引用和值之间的差异,但在处理可变对象时,这种差异是根本性的
相关问题 更多 >
编程相关推荐