Подтвердить что ты не робот

'недопустимое значение, обнаруженное в предупреждении double_scalars, возможно, numpy

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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

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

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

Ответ 5

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

Нет == Нет True

np.nan == np.nan False

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

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

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

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

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

Ответ 6

Всякий раз, когда вы работаете с импортом CSV, попробуйте использовать df.dropna(), чтобы избежать всех таких предупреждений или ошибок.

Ответ 7

Я приписываю это, пока вычисляю np.var(np.array([])). np.var разделит размер массива, который в этом случае равен нулю.