'недопустимое значение, встречающееся в предупреждении double_scalars', возможно numpy - PullRequest
53 голосов
/ 22 сентября 2010

Когда я запускаю свой код, я получаю эти предупреждения, всегда в группах по четыре, время от времени.Я попытался определить источник, разместив отладочные сообщения до и после определенных операторов, чтобы точно определить его источник.

Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars

Это предупреждение Numpy и что такое двойной скаляр?

Из Numpy я использую

min(), argmin(), mean() and random.randn()

Я также использую Matplotlib

Ответы [ 5 ]

41 голосов
/ 22 сентября 2010

Это похоже на ошибку вычисления с плавающей точкой. Проверьте функцию numpy.seterr , чтобы получить больше информации о том, где это происходит.

38 голосов
/ 13 декабря 2010

В моем случае я обнаружил, что это деление на ноль.

9 голосов
/ 08 ноября 2010

Иногда NaNs или нулевые значения в данных генерируют эту ошибку с помощью Numpy. Если вы принимаете данные из, скажем, CSV-файла или чего-то в этом роде, а затем работаете с данными с помощью массивов, проблема могла возникнуть из-за вашей загрузки данных. Вы можете попробовать передать в свой код небольшой набор данных с известными значениями и посмотреть, получите ли вы тот же результат.

4 голосов
/ 24 ноября 2015

Массив нулевого размера, переданный numpy.mean, вызывает это предупреждение (как указано в нескольких комментариях).

Для некоторых других кандидатов:

  • median также вызывает это предупреждениев массиве нулевого размера.

другие кандидаты не вызывают это предупреждение:

  • min,argmin оба повышают ValueError в пустом массиве
  • randn занимает *arg;использование randn(*[]) возвращает одно случайное число
  • std,var return nan в пустом массиве
1 голос
/ 28 августа 2016

Я столкнулся с подобной проблемой - неверное значение обнаружилось в ... Потратив много времени, пытаясь выяснить, что является причиной этой ошибки, я считаю, что в моем случае это произошло из-за NaN в моем фрейме данных. Проверьте работу с отсутствующими данными в пандах.

Нет == Нет Правда

np.nan == np.nan Ложные

Когда NaN не равен NaN, арифметические операции, такие как деление и умножение, приводят к возникновению этой ошибки.

Несколько вещей, которые вы можете сделать, чтобы избежать этой проблемы:

  1. Используйте pd.set_option, чтобы установить число десятичных дробей, которое будет учитываться в вашем анализе, чтобы бесконечно малое число не вызывало подобной проблемы - ('display.float_format', lambda x: '% .3f'% x).

  2. Используйте df.round () для округления чисел, чтобы Panda отбросил оставшиеся цифры из анализа. И самое главное,

  3. Установите NaN на ноль df = df.fillna (0). Будьте осторожны, если заполнение NaN нулем не применяется к вашим наборам данных, так как это будет относиться к записи как к нулю, поэтому значение N в среднем, стандартное значение и т. Д. Также изменятся.

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