Предполагая, что тип Numberri c (точный или неточный) массива строк? - PullRequest
0 голосов
/ 23 апреля 2020

Предположим, у меня есть массив строк, и я знаю, что они являются числами, но не знаю, являются ли они inti sh или floati sh. Если бы я знал, я мог бы просто конвертировать, используя .astype(int) или .astype(float). Каков хороший (читаемый, производительный, в идеале не включающий регулярные выражения), чтобы узнать? Есть ли какие-нибудь машины Python или numpy, которые можно было бы угнать?

1 Ответ

0 голосов
/ 23 апреля 2020

Одна вещь, которую вы, безусловно, могли бы сделать, это проанализировать их все как числа с плавающей точкой, поскольку целые числа также будут анализировать как числа с плавающей точкой. Затем вы можете увидеть, если остаток от деления на 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])
...