как бороться с -inf и Nan в numpy, при использовании функции log - PullRequest
0 голосов
/ 11 февраля 2019

Я уверен, что многие из вас используют функцию numpy log.Как вы справляетесь с Nan и -Inf?Есть ли какой-нибудь питонный способ удалить его из массива?

a = np.array([[0,1],
              [0,0],
              [1,1]])

b = np.log(a[:,0]/a[:,1])

print(b)

1 Ответ

0 голосов
/ 11 февраля 2019

Просто индексируйте массив, где значения конечны, используя np.isfinite() (документы здесь ).

>>> a = np.array([[0,1],
                  [0,0],
                  [1,1]])
>>> b = np.log(a[:,0]/a[:,1])
>>> b[np.isfinite(b)]
array([ 0.])

Функция np.isfinite() даст вам логический массив того же размера, что и входной массив, равный True везде, где значение конечно, то есть не-NaN и не-inf, и False в противном случае:

>>> np.isfinite(b)
array([False, False,  True], dtype=bool)

, который затем можно использовать в качестве логического индекса, поэтому он будет извлекать значения только из b, где этот результат равен True (в данном случае это конечный индекс, который имеет значение 0).

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