如何生成包括 NaN 在内的随机值



我想生成随机浮点数,包括数据框中的NaN np.random.randn

您可以生成随机浮点数数组,然后使用 p 创建带有np.choice的掩码,以允许您为要包含的NaN数设置权重。

像这样:

import numpy as np
a = np.random.randn(20)
mask = np.random.choice([1, 0], a.shape, p=[.1, .9]).astype(bool)
a[mask] = np.nan

结果:

array([ 1.2769248 ,  0.5949608 , -1.38006737,  0.3582266 , -1.852884  ,
        0.81121663, -1.45830948,  0.03117856,  0.54509948,  1.22019729,
        1.71643753,         nan, -0.32470862, -0.77604474,  0.76698089,
       -0.47863251,         nan, -0.33308071, -0.32026717,  1.8493752 ])

如果您正在处理数据帧,则可以使用 apply .

import numpy as np
import pandas as np
df = pd.DataFrame()
df['a'] = np.zeros(10) # or get data from somewhere else
p = 2/7
df.a.apply(lambda x: np.nan if np.random.rand() < p else np.random.rand())

最新更新