隐藏的Numpy数组字符串浮动aftrer截断

时间:2017-10-08 06:24:09

标签: python arrays pandas numpy

我下面有一个numpy数组gven:

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

我需要移除E F和G并将数组中的每个元素转换为Float。我该怎么办?

2 个答案:

答案 0 :(得分: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 :(得分: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.  ]]