使用Numpy将空字符串转换为0

时间:2013-04-10 21:26:47

标签: python numpy

我有一个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),但我怀疑空字符串会导致转换出现问题。

3 个答案:

答案 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.])