предупреждение об ошибке пренебрежения в numpy массиве вычислений - PullRequest
0 голосов
/ 10 февраля 2020

Здравствуйте, мне интересно, могу ли я использовать что-то вроде "try-исключения", чтобы избежать предупреждений об ошибках и поместить np.nan в массив результатов?

, например,

import numpy as np
a = np.array([1,1])
b = np.array([1,0])
c = a/b

будет "ошибка деления на ноль" I wi sh, чтобы игнорировать эту ошибку и получить c как np.array ([1, np.nan])

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

Если это должно быть все oop, что будет самым быстрым способом?

1 Ответ

0 голосов
/ 10 февраля 2020
In [219]: a = np.array([1,1]) 
     ...: b = np.array([1,0]) 
     ...: c = a/b                                                                              
/usr/local/bin/ipython3:3: RuntimeWarning: divide by zero encountered in true_divide
  # -*- coding: utf-8 -*-
In [220]: c                                                                                    
Out[220]: array([ 1., inf])

Заменить / на divide. Как ufunc он принимает параметры where и out, которые работают вместе, чтобы пропустить 0 и вместо них поставить nan:

In [224]: np.divide(a,b, where=(b!=0), out=np.full(a.shape,np.nan))                            
Out[224]: array([ 1., nan])

Возможно также отключить предупреждение, но это не заменяет inf на nan. Этот код ufunc является самым простым способом сделать оба.

Применение функции к массиву numpy дает разные ответы в разных прогонах

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