首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解scipy.stats.norm.rvs()?

理解scipy.stats.norm.rvs()?
EN

Stack Overflow用户
提问于 2017-06-09 16:10:11
回答 2查看 18.5K关注 0票数 5

scipy.stats.norm.rvs()中,参数scale表示标准差,但在下面的代码中,sigma_list表示数组。代码实际上是如何工作的?

其中,sigma_list是通过以下代码获得的:

代码语言:javascript
运行
复制
sigma=0.06

mask=(x > 0.65) & (x < 0.8)

sigma_list=sigma+mask*0.03

sigma_list

y = sp.stats.norm.rvs(scale=sigma_list, size=200)

甚至sigma_list和y的标准差也不匹配

我想知道上面的scipy模块的工作原理。

对不起,我没有提到x是一个介于0和1之间的数组

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-09 16:17:30

在您的代码中,mask将在此处为True或False。所以如果你做一些加法或减法,它会分别转化为1或0。

那么sigma_list的结果既不是列表也不是数组,而是一个浮点值。查看documentation,您可以看到它的使用情况。

代码语言:javascript
运行
复制
rvs(loc=0, scale=1, size=1, random_state=None)

如果您查看code (第2771行),您将看到:

loc : array_like,可选位置参数(default=0)。

大小:整数或整数的元组,可选定义随机变量的数量(默认值为1)。请注意,size必须作为关键字给出,而不是作为位置参数。

random_state : None或int或np.random.RandomState实例,可选如果为int或RandomState,则使用它来绘制随机变量。如果没有,则依赖于self.random_state。默认值为None。

票数 4
EN

Stack Overflow用户

发布于 2020-06-05 22:54:38

首先,您应该创建了一个名为x的变量。这个变量的大小应该是200,因为这是生成的随机变量y的大小。

代码语言:javascript
运行
复制
import numpy as np
x = np.linspace(0, 1, 200)

mask将选择大于0.65且小于0.8的每个x样本。变量mask将是一个与x大小相同的布尔向量,即200个样本。此掩码将具有值为True或False的样本。对于满足条件(0.65 < x < 0.8)的数组x的每个样本,掩码的相应样本的值将为True,否则为False。

将布尔值与数字相乘时,布尔值的行为类似于值为0 (False)或1 (True)的整数。因此乘法mask * 0.03的结果是0.03where 0.65 < x < 0.8,否则为0。

所以这段代码可以简单地做到这一点:

0.09;

  • Otherwise
  • 0.65 < x < 0.8标准偏差为0.06 + 0.03,即,标准偏差为0.06
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44452600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档