为了账号安全,请及时绑定邮箱和手机立即绑定

为什么numpy数组乘法的两种方法给出不同的答案?

为什么numpy数组乘法的两种方法给出不同的答案?

HUX布斯 2021-10-26 13:40:31
在这个小例子中,两个“res”变量给出了不同的结果。有人可以解释为什么会这样吗?我希望他们都返回大约 5。import numpy as npimport matplotlib.pyplot as pltdist1 = np.random.normal(100., 10., 10000)dist2 = np.random.normal(0.05, 0.005, 10000)res1 = dist1res1 *= dist2res2 = dist1 * dist2print np.median(res1)print np.median(res2)# 4.986893617080765# 0.24957162692779786
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

res1 = dist1也不会复制dist1。您正在修改它,*=因此这是两个不同的操作。


使用copy到阵列复制:


>>> dist1 = np.random.normal(100., 10., 10000)

>>> dist2 = np.random.normal(0.05, 0.005, 10000)

>>> 

>>> res1 = dist1.copy()

>>> res1 *= dist2

>>> 

>>> res2 = dist1 * dist2

>>> 

>>> print(np.median(res1))

4.970902419879373

>>> print(np.median(res2))

4.970902419879373

只是一个提示:python 中的“变量”只是对象的名称(即引用)。他们不是代表一个内存位置。这样做:


res1 = dist1

您只是为名称为 的对象赋予一个新名称dist1,现在该对象有两个名称(res1和dist1)并且两者都可以访问。


当对象是不可变的时,名称/引用和值之间的区别很难看出,但在处理可变对象时区别是根本的。


查看完整回答
反对 回复 2021-10-26
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号