推断字符串数组的数字类型(精确或不精确)?

时间:2020-04-23 05:34:39

标签: python numpy parsing

假设我有一个字符串数组,并且我知道它们是数字,但不知道它们是整数还是浮点数。如果我知道,我可以简单地使用.astype(int).astype(float)进行转换。找出问题的一种好方法(可读,高效,理想情况下不涉及袖套正则表达式)?是否存在一些可以劫持的Python或Numpy机械?

1 个答案:

答案 0 :(得分:0)

您当然可以做的一件事就是将它们全部解析为浮点数,因为ints也会解析为浮点数。然后,您可以看到除以1的余数是否为0(如果为零,则为整数)。然后,您将得到一个布尔数组,告诉您整数在哪里。像这样:

import numpy as np
array = np.array(['454.13', '1.243', '8'])
floats = array.astype(float)
remainders = np.remainder(floats, 1)
int_indices = remainders == 0
ints = floats[int_indices]

我故意在这里做了“太多”的步骤,以使我的意思更清楚,希望对您有所帮助。

输出为:

>>>ints
array([8.00000000e+00])
>>>int_indices
array([False, False,  True])