首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >np.random.rand()或random.random()

np.random.rand()或random.random()
EN

Stack Overflow用户
提问于 2021-09-07 08:18:10
回答 1查看 433关注 0票数 3

在分析代码时,我偶然发现了以下代码片段:

代码语言:javascript
复制
msk = np.random.rand(len(df)) < 0.8

变量"msk“和"df”与我的问题无关。在做了一些研究后,我认为这种用法也与“随机”类有关。它在随机元素上给出True和False的概率分别为80%和20%。它是为了掩蔽而做的。我理解为什么要使用它,但我不明白它是如何工作的。随机方法不是应该给出浮点数吗?当我们将方法放在一个区间中时,为什么会有布尔语句?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-07 08:21:33

np.random.rand(len(df))返回一个介于0和1之间的均匀随机数组,np.random.rand(len(df)) < 0.8将根据条件将其转换为布尔值数组。

由于有80%的可能性低于0.8,因此有80%的True值。

一种更明确的方法是使用numpy.random.choice

代码语言:javascript
复制
np.random.choice([True, False], p=[0.8, 0.2], size=len(df))

如果您的目标是对数据帧进行子集,那么更好的方法是使用:

代码语言:javascript
复制
df.sample(frac=0.8)

如何拆分0.8/0.2数据帧:

代码语言:javascript
复制
df1 = df.sample(frac=0.8)
df2 = df.drop(df1.index)
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69084646

复制
相关文章

相似问题

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