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

Ole*_*ksi 4 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']
Run Code Online (Sandbox Code Playgroud)

我想替换所有空字符串,如上面第二行中的字符串,默认值为0.我怎么能用numpy做这个?

最终的目标是能够运行:S.astype(np.float)但我怀疑空字符串在转换中引起了问题.

Bit*_*ise 16

如果你的数组是t:

t[t=='']='0'
Run Code Online (Sandbox Code Playgroud)

然后转换它.

说明:

t==''创建一个布尔数组,其形状与t具有True值的形状相同,其中相应的t值为空白空间.然后,此布尔数组仅用于分配'0'原始中的相应索引t.


ask*_*han 5

只需先这样做:

s = np.array(['1', '0', ''])
s[s==''] = '0'

s.astype(float)
#array([ 1.,  0.,  0.])
Run Code Online (Sandbox Code Playgroud)


Jas*_*ske 5

这是一种使用map的方法:

def FloatOrZero(value):
    try:
        return float(value)
    except:
        return 0.0


print map(FloatOrZero, ['3', '1', '', '0', '0', '8.4583', '0'])
Run Code Online (Sandbox Code Playgroud)

输出:

[3.0, 1.0, 0.0, 0.0, 0.0, 8.4583, 0.0]
Run Code Online (Sandbox Code Playgroud)

如果您需要更多灵活性