'недопустимое значение, обнаруженное в предупреждении 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
5 ответов
похоже на ошибку вычисления с плавающей запятой. Проверьте и NumPy.seterr функция для получения дополнительной информации о том, где это происходит.
иногда NaNs или null значения в данных будут генерировать эту ошибку с Numpy. Если вы глотаете данные из, скажем, CSV-файла или что-то в этом роде, а затем работаете с данными с помощью массивов numpy, проблема могла возникнуть с вашим глотанием данных. Вы можете попробовать ввести в свой код небольшой набор данных с известными значениями и посмотреть, получите ли вы тот же результат.
массив нулевого размера передан numpy.mean
вызывает это предупреждение (как указано в нескольких комментариях).
для некоторых других кандидатов:
-
median
также вызывает это предупреждение для массива нулевого размера.
другие кандидаты не поднимают это предупреждение:
-
min,argmin
Как поднятьValueError
на пустой массив -
randn
принимает*arg
; черезrandn(*[])
возвращает одно случайное число -
std,var
возвращениеnan
на пустом массиве
Я столкнулся с аналогичной проблемой-недопустимое значение встречается В... Потратив много времени, пытаясь выяснить, что вызывает эту ошибку, я считаю, что в моем случае это было связано с NaN в моем фрейме данных. Проверьте работу с отсутствующими данными в pandas.
Нет == Нет Правда
np.nan == np.бабушка Ложные
когда NaN не равен NaN, то арифметические операции, такие как деление и умножение, вызывают эту ошибку.
пару вещей вы можете сделать, чтобы избежать этой проблемы:
использовать pd.set_option для установки десятичного числа для рассмотрения в вашем анализе, чтобы число infinitesmall не вызывало аналогичную проблему - ('display.float_format', lambda x:'%.3f ' % x).
использовать df.round() для округления чисел, чтобы Panda отбрасывала оставшиеся цифры из анализа. И самое главное,
установить NaN в ноль df=df.fillna(0). Будьте осторожны при заполнении NaN нулем не применяется к вашим наборам данных, потому что это будет рассматривать запись как ноль, поэтому N в среднем, std и т. д. также изменяется.