在分析代码时,我偶然发现了以下代码片段:
msk = np.random.rand(len(df)) < 0.8变量"msk“和"df”与我的问题无关。在做了一些研究后,我认为这种用法也与“随机”类有关。它在随机元素上给出True和False的概率分别为80%和20%。它是为了掩蔽而做的。我理解为什么要使用它,但我不明白它是如何工作的。随机方法不是应该给出浮点数吗?当我们将方法放在一个区间中时,为什么会有布尔语句?
发布于 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
np.random.choice([True, False], p=[0.8, 0.2], size=len(df))如果您的目标是对数据帧进行子集,那么更好的方法是使用:
df.sample(frac=0.8)如何拆分0.8/0.2数据帧:
df1 = df.sample(frac=0.8)
df2 = df.drop(df1.index)https://stackoverflow.com/questions/69084646
复制相似问题