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

Python 使用Numpy将空字符串转换为0,python,numpy,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),但我怀疑空字符串会导致转换出现问题。如果您的数组是t: t[t=='']='0'

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

如果您的数组是t:

t[t=='']='0'
然后转换它

说明:

t=''
创建一个与
t
形状相同的布尔数组,该数组具有一个真值,其中对应的
t
值是一个空白。然后使用此布尔数组将
'0'
仅分配给原始
t

中的相应索引,请先执行以下操作:

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

s.astype(float)
#array([ 1.,  0.,  0.])

以下是一种使用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]

如果您需要更大的灵活性

那么这些是numpy字符串数组?是的。它是用np.array创建的。numpy数组不能与列表理解一起使用吗?酷,我不记得这个构造,我正要用列表理解发布一个答案,但是这个很短@用户1778770仅当您有列表时才使用列表理解。只要你有一个numpy数组,你就应该充分利用它。我认为你可以通过添加一个链接到一个页面来更好地回答这个问题,这个页面记录了你公开的构造。这是为那些想知道发生了什么的初学者准备的。我还没找到