我下面有一个numpy数组gven:
array([[' 0.12E'],
[' 0.00F'],
[' 0.00F'],
...,
[' 0.00G'],
[' 0.00G'],
[' 0.00G']], dtype=object)
我需要移除E F和G并将数组中的每个元素转换为Float。我该怎么办?
答案 0 :(得分:4)
选项1
使用numpy
字符串类型自动修剪最后一个字符。然后转换为float
如果您可以相信所有条目都是6个字符长,并以需要修剪的字符结束:...
a.astype('<U5').astype(float)
array([[ 0.12],
[ 0. ],
[ 0. ],
[ 0. ],
[ 0. ],
[ 0. ]])
选项2
使用pd.DataFrame.replace
和regex=True
删除非数字,然后转换为浮点数。
pd.DataFrame(a).replace('[^\d\.]', '', regex=True).astype(float).values
array([[ 0.12],
[ 0. ],
[ 0. ],
[ 0. ],
[ 0. ],
[ 0. ]])
答案 1 :(得分:1)
使用:
s = pd.Series(a[:, 0])
a = s.str.strip().str[:-1].astype(float).values.reshape(-1, 1)
print (a)
[[ 0.12]
[ 0. ]
[ 0. ]
[ 0. ]
[ 0. ]
[ 0. ]]