2017-10-08 71 views
1

我有一个numpy的阵列下面gven:字符串的隐蔽numpy的阵列aftrer截断

array([[' 0.12E'], 
     [' 0.00F'], 
     [' 0.00F'], 
     ..., 
     [' 0.00G'], 
     [' 0.00G'], 
     [' 0.00G']], dtype=object) 

我需要删除,电子F和G以及阵列中隐蔽的每个元素为浮点数。我该怎么做??

回答

4

选项1
使用numpy字符串类型自动修剪最后一个字符。然后转换为float
如果你能相信所有条目6个字符长,需要进行修整一个字符结尾:...

a.astype('<U5').astype(float) 

array([[ 0.12], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ]]) 

选项2
使用pd.DataFrame.replaceregex=True删除非数字,然后转换为浮点数。

pd.DataFrame(a).replace('[^\d\.]', '', regex=True).astype(float).values 

array([[ 0.12], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ]]) 
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. ]]