Skip to main content
 首页 » 编程设计

python之有没有更好的方法通过将 'object' 替换为 mean 来将 'na' 类型数组转换为 numpy 数组

2025年05月04日23davidwang456

<分区>

我有一个字符串数组,其中包含一些元素,例如“na”,这些元素无法通过使用 x.astype(np.float) 转换为 float here .

请提出比我做的更好的方法。请找到下面的过程(这是我的 jupyter notebook 的一个片段,我已经展示了中间步骤只是为了演示更改):

在[4]中:val_inc

输出[4]:

array(['na', '38.012', '38.7816', '38.0736', '40.7118', '44.7382', 
       '39.6416', '38.9177', '36.9031', 43.2611, '38.2732', 40.7129, 
       '37.2844', '39.5835', 43.9194, '42.5485', '36.9052', 'na', 41.9264, 
       45.3568, '44.6239', 38.1079, 45.2393, '32.785', '44.6239', 
       '38.0216', '38.4608', '42.5644', '35.3127', 33.2936, '33.0556', 
       '40.4476', 35.6581, '35.5574', '43.1096', '34.4751', 42.0554, 
       40.3944, '40.2466', '32.2567', 'na', '38.8594', '43.947', 41.7973, 
       '41.8105', 40.3797, 31.2868, '45.3644', '40.7177', '41.8558', 
       '38.9249', '33.2077', '42.4053', '42.559'], dtype=object) 

在 [5] 中:val_inc[val_inc == 'na']='0'

在[6]中:val_inc

输出[6]:

array(['0', '38.012', '38.7816', '38.0736', '40.7118', '44.7382', 
       '39.6416', '38.9177', '36.9031', 43.2611, '38.2732', 40.7129, 
       '37.2844', '39.5835', 43.9194, '42.5485', '36.9052', '0', 41.9264, 
       45.3568, '44.6239', 38.1079, 45.2393, '32.785', '44.6239', 
       '38.0216', '38.4608', '42.5644', '35.3127', 33.2936, '33.0556', 
       '40.4476', 35.6581, '35.5574', '43.1096', '34.4751', 42.0554, 
       40.3944, '40.2466', '32.2567', '0', '38.8594', '43.947', 41.7973, 
       '41.8105', 40.3797, 31.2868, '45.3644', '40.7177', '41.8558', 
       '38.9249', '33.2077', '42.4053', '42.559'], dtype=object) 

在 [7] 中:val_inc = val_inc.astype(np.float)

在[8]中:val_inc

输出[8]:

array([  0.    ,  38.012 ,  38.7816,  38.0736,  40.7118,  44.7382, 
        39.6416,  38.9177,  36.9031,  43.2611,  38.2732,  40.7129, 
        37.2844,  39.5835,  43.9194,  42.5485,  36.9052,   0.    , 
        41.9264,  45.3568,  44.6239,  38.1079,  45.2393,  32.785 , 
        44.6239,  38.0216,  38.4608,  42.5644,  35.3127,  33.2936, 
        33.0556,  40.4476,  35.6581,  35.5574,  43.1096,  34.4751, 
        42.0554,  40.3944,  40.2466,  32.2567,   0.    ,  38.8594, 
        43.947 ,  41.7973,  41.8105,  40.3797,  31.2868,  45.3644, 
        40.7177,  41.8558,  38.9249,  33.2077,  42.4053,  42.559 ]) 

在 [9] 中:np.mean(val_inc[val_inc!=0.])

输出 [9]:39.587374509803915

在 [10] 中:val_inc[val_inc==0.]=np.mean(val_inc[val_inc!=0.])

在[11]中:val_inc

输出[11]:

array([ 39.58737451,  38.012     ,  38.7816    ,  38.0736    , 
        40.7118    ,  44.7382    ,  39.6416    ,  38.9177    , 
        36.9031    ,  43.2611    ,  38.2732    ,  40.7129    , 
        37.2844    ,  39.5835    ,  43.9194    ,  42.5485    , 
        36.9052    ,  39.58737451,  41.9264    ,  45.3568    , 
        44.6239    ,  38.1079    ,  45.2393    ,  32.785     , 
        44.6239    ,  38.0216    ,  38.4608    ,  42.5644    , 
        35.3127    ,  33.2936    ,  33.0556    ,  40.4476    , 
        35.6581    ,  35.5574    ,  43.1096    ,  34.4751    , 
        42.0554    ,  40.3944    ,  40.2466    ,  32.2567    , 
        39.58737451,  38.8594    ,  43.947     ,  41.7973    , 
        41.8105    ,  40.3797    ,  31.2868    ,  45.3644    , 
        40.7177    ,  41.8558    ,  38.9249    ,  33.2077    , 
        42.4053    ,  42.559     ])