【发布时间】:2018-01-09 08:08:57
【问题描述】:
我有一个字符串数组,其中包含一些元素,例如 'na',这些元素无法通过使用给定的here 中的x.astype(np.float) 转换为浮点数。
请提出比我做的更好的方法。请在下面找到过程(它是我的 jupyter notebook 中的一个 sn-p,我展示了中间步骤只是为了演示更改):
在[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 ])
【问题讨论】:
-
把
'na'换成'nan',就可以转换成浮点数了。 -
@kazemakase 感谢您的建议。我不知道字符串 'nan' 可以直接转换为 np.nan
-
很抱歉我的问题被证明是重复的,我会努力提高我的搜索技巧。
-
无需道歉......相反,您的问题被标记为重复问题现在可以作为其他可能正在寻找与您相同的搜索字词的人的路标。跨度>
标签: python arrays string numpy