Python: Как распечатать причину RuntimeWarning: недопустимое значение, обнаруженное в большем - PullRequest
1 голос
/ 30 апреля 2020

В моем симуляции, при достижении такого выражения функции внутри a для l oop:

d1ToUse = d2Weights[:,i] > 1e-9 

иногда выдается предупреждение:

RuntimeWarning: invalid value encountered in greater...

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

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

            if d2Weights[:,i] == []:
                continue
            if np.any(d2Weights[:, i] == None):
                continue
            if np.any(d2Weights[:, i] == np.nan):
                continue
            if sum(d2Weights[d1ToUse, i]) == 0.0:
                continue
            if d2Weights[d1ToUse, i] is None:
                continue
            if np.any(d2Weights[d1ToUse, i] == None):
                continue
            if np.any(d2Weights[d1ToUse, i] == np.nan):
                continue

Поскольку проблема сохраняется, я хотел бы посмотреть, как выглядит «большее» значение для ее проверки. и определите причину root.

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

Буду благодарен за любые предложения.

РЕДАКТИРОВАТЬ:

d2Weights это массив numpy с плавающей точкой. Он хранит веса для кругового взвешенного усреднения с ядром RBF.

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете использовать библиотеку предупреждений : https://docs.python.org/3/library/warnings.html https://www.geeksforgeeks.org/warnings-in-python/

Фильтр предупреждений контролирует, отображаются ли предупреждения, отображаются или превратились в ошибки (подняв исключение). Таким образом, вы можете превратить предупреждение в ошибку и поместить критическую строку в вашем коде в try block . Затем вы можете использовать блок , за исключением , чтобы выяснить причину вашей проблемы и напечатать, например, «большее» значение. https://www.w3schools.com/python/python_try_except.asp

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

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