You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

np.random.rand生成值与0.8比较得到布尔掩码的运行原理是什么

代码运行逻辑拆解

这行代码可以拆成两个独立步骤理解:

  • 第一步:运行np.random.rand(len(df))
    这是NumPy提供的随机数生成方法,会返回一个长度和len(df)相等的一维浮点数组,数组内每个元素都是独立从[0, 1)均匀分布中采样得到的随机值,所有值的取值范围都在0(包含)到1(不包含)之间。
  • 第二步:执行< 0.8的比较操作
    NumPy原生支持向量化运算,不需要手动写循环遍历,会自动把数组里的每一个元素分别和0.8做大小比较:
    • 若元素值小于0.8,对应位置返回布尔值True
    • 若元素值大于等于0.8,对应位置返回布尔值False

疑问点说明

你会有困惑大概率是把普通Python的随机方法和NumPy的行为搞混了:
普通Python的random.random()确实只返回单个浮点数,单个浮点数和0.8比较只会得到单个布尔值;但这里调用的是NumPy的随机方法,返回的是一整个浮点数组,配合NumPy的向量化比较规则,最终输出的就是和输入数组形状完全一致的布尔数组,也就是你说的掩码。
又因为每个随机值在[0,1)区间是均匀分布的,所以单个元素小于0.8的概率刚好是80%,大于等于0.8的概率是20%,刚好符合数据集拆分等场景的掩码需求。

内容的提问来源于stack exchange,提问作者Kiddbora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:09:02