Рубрики
Без рубрики

[Решено] NUMPY Runtimewarning: все нан нан столкнулся

Формировка задачи Вы используете функцию NP.NANMedian () NUMPY в вашем коде, который должен игнорировать значения NAN при вычислении среднего значения naMpy. Import Numpy AS NP.ARRay ([NP.NAN, NP.NAN]). Nanmedian (A) Но при использовании NANMEDIAN поднимает runtimewarning: All-Nan Sixcelected Message: предупреждение (из модуля предупреждения): файл “C: \ Пользователи \ xcent \ appdata \ local \ programs \ python \ python37 \ lib \ site-packages \ numpy \ lib \ nanfunctions.py “, line … [Решено] numpy runtimewarning: Все нан нан.

Автор оригинала: Chris.

Постановка проблемы

Вы используете Numpy’s np.nanmedian () Функция в вашем коде, который должен игнорировать Нан Значения при вычислении среднего значения Numpy Array.

import numpy as np
a = np.array([np.NaN, np.NaN])
mean = np.nanmedian(a)

Но при использовании этого Numpy поднимает Runtimewarning: все нанесенный наном, встречающийся сообщение:

Warning (from warnings module):
  File "C:\Users\xcent\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\nanfunctions.py", line 1114
    overwrite_input=overwrite_input)
RuntimeWarning: All-NaN slice encountered

В чем причина этого предупреждения и как это исправить?

Решение + объяснение

Причина, по которой возникает это предупреждение, потому что вы применяете np.nanmedian () Функция на пустом массиве. Функция не вызывает ошибки, если массив имеет хотя бы одно ненанское значение:

>>> np.nanmedian([0.42, np.NaN, np.NaN])
0.42

Если хотя бы один элемент представляет собой числовое значение, среднее значение четко определено: Получить медиану все не Нан элементы.

Однако, если все элементы в Numpy Array есть NP.NAN Numpy поднимает Runtimewarning :

import numpy as np
a = np.array([np.NaN, np.NaN])
mean = np.nanmedian(a)
print(mean)
'''
OUTPUT:
Warning (from warnings module):
  File "C:\Users\xcent\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\nanfunctions.py", line 1114
    overwrite_input=overwrite_input)
RuntimeWarning: All-NaN slice encountered
nan
'''

Тем не менее, вы также можете увидеть, что он все еще генерирует возвращаемое значение: Не – номер или Нан Отказ

Поскольку этот пограничный случай правильно определен и однозначно, это вызвало некоторые программисты для Спросите Имеет ли это даже смысл выпускать это предупреждение.

💡 На мой взгляд, выдача предупреждения не имеет большого смысла в случае np.nanmedian () функция. От Python’s Дзэн Питона мы знаем, что «Явное лучше, чем неявное» Отказ Итак, либо поднимите исключение, и позвольте программисту справляться с ним напрямую или просто позвольте ему пройти, если все правильно определено.

Если я, как я, вы раздражены этим предупреждением, вы можете просто подавить его:

Как подавить Runtimewarning?

Менеджер контекста предупреждения .Catch_warnings подавляет предупреждение, но только если вы действительно предвидите его. В противном случае вы можете пропустить несколько дополнительных Runtimewarning С ты не видел приходить.

import numpy as np
import warnings


with warnings.catch_warnings():
    warnings.simplefilter("ignore", category=RuntimeWarning)
    median = np.nanmedian([np.NaN, np.NaN])
    print(median)

Выход без предупреждения:

nan

Однако вы должны быть уверены, что это единственное предупреждение, которое может появиться в с Блок-среда. В противном случае вы можете пропустить несколько важных предупреждений, которые уже обсуждались.

Более безопасный путь, вероятно, будет использовать предупреждения. Фильтеррынарны (действие = «игнорировать»,) Впустить не предвидеть Runtimewarning с.

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.