我有一个numpy数组,其中每个元素看起来像这样:
['3' '1' '35' '0' '0' '8.05' '2']
['3' '1' '' '0' '0' '8.4583' '0']
['1' '1' '54' '0' '0' '51.8625' '2']
我想替换所有空字符串,如上面第二行中的字符串,默认值为0.如何使用numpy执行此操作?
最终目标是能够运行:S.astype(np.float)
,但我怀疑空字符串会导致转换出现问题。
答案 0 :(得分:16)
如果您的数组是t:
t[t=='']='0'
然后转换它。
<强>解释强>
t==''
创建一个布局数组,其形状与t
相同,具有True值,其中相应的t
值为空格。然后使用此布尔数组将'0'
仅分配给原始t
中的相应索引。
答案 1 :(得分:5)
这是一种使用map的方法:
def FloatOrZero(value):
try:
return float(value)
except:
return 0.0
print map(FloatOrZero, ['3', '1', '', '0', '0', '8.4583', '0'])
输出:
[3.0, 1.0, 0.0, 0.0, 0.0, 8.4583, 0.0]
如果您需要更多灵活性
答案 2 :(得分:3)
首先这样做:
s = np.array(['1', '0', ''])
s[s==''] = '0'
s.astype(float)
#array([ 1., 0., 0.])