Почему numpy .sum в столбцах данных возвращают inf? - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть Pandas фрейм данных со столбцами типа float64

Я пытаюсь вычислить функцию применения суммы для некоторых столбцов по numpy.sum

Когда я активирую функцию np.sum(x[col_name]) I получая результат 'inf'

Но когда я проверяю, где находится значение 'inf' с помощью np.where(np.isinf(x[col_name])), я получаю пустые результаты.

Итак, что я делаю неправильно ...

Спасибо.

1 Ответ

2 голосов
/ 21 апреля 2020

Похоже, проблема в том, что одно из чисел в ваших данных превышает максимально допустимое значение np.float64. Если вы запустите np.finfo(np.float64), вы увидите наибольшее число, которое принимает этот dtype:

Machine parameters for float64
---------------------------------------------------------------
precision =  15   resolution = 1.0000000000000001e-15
machep =    -52   eps =        2.2204460492503131e-16
negep =     -53   epsneg =     1.1102230246251565e-16
minexp =  -1022   tiny =       2.2250738585072014e-308
maxexp =   1024   max =        1.7976931348623157e+308
nexp =       11   min =        -max
--------------------------------------------------------------

Согласно этому ответу: { ссылка } python объекты используют произвольную длину реализации, поэтому решение было бы сделать dtype вашего массива object. Это означает, что ваш код в целом будет работать медленнее, поскольку ваши данные не являются объектами numpy, но, вероятно, будут выводить правильную сумму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...