Kid*_*ora 5 python random numpy random-seed
在分析代码时,我偶然发现了以下代码片段:
msk = np.random.rand(len(df)) < 0.8
Run Code Online (Sandbox Code Playgroud)
变量“msk”和“df”与我的问题无关。经过一些研究后,我认为这种用法也与“随机”类有关。对于随机元素,它给出 True 的概率为 80%,给出 False 的概率为 20%。它是为了遮蔽而完成的。我明白为什么使用它,但我不明白它是如何工作的。随机方法不应该给出浮点数吗?为什么我们把方法放在区间里的时候会有布尔语句呢?
moz*_*way 13
np.random.rand(len(df))
返回 0 到 1 之间的均匀随机数数组,np.random.rand(len(df)) < 0.8
根据条件将其转换为布尔数组。
由于有 80% 的机会低于 0.8,因此存在 80% 的真实值。
更明确的方法是使用numpy.random.choice
:
np.random.choice([True, False], p=[0.8, 0.2], size=len(df))
Run Code Online (Sandbox Code Playgroud)
如果您的目标是对数据帧进行子集化,则更好的方法是使用:
df.sample(frac=0.8)
Run Code Online (Sandbox Code Playgroud)
df1 = df.sample(frac=0.8)
df2 = df.drop(df1.index)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1449 次 |
最近记录: |