Замените -inf нулевым значением.

У меня есть массив:

x =  numpy.array([-inf, -inf, 37.49668579])

Есть ли способ изменить значения -inf на 0?


person user1821176    schedule 10.01.2014    source источник


Ответы (3)


Есть:

from numpy import inf
x[x == -inf] = 0
person pv.    schedule 10.01.2014
comment
согласно моему тесту, это примерно на 20% быстрее, чем np.isneginf - person Wang; 20.06.2016
comment
Как здесь используются скобки? Это индексирование с условным или списковым пониманием? - person chimeric; 25.07.2017
comment
Нет понимания списка. Это нулевая индексация с использованием логического массива. В этом случае: Элементы x равны -inf. - person jabellcu; 27.03.2018
comment
NameError: глобальное имя «inf» не определено - person john ktejik; 18.11.2018
comment
@johnktejik, ты выполнил оператор импорта from numpy import inf? - person skjerns; 12.06.2020
comment
Я считаю, что лучше использовать X[~np.isfinite(X)] = 0 или x[numpy.isneginf(x)] = 0, как во втором ответе. - person Adiel Loinger; 06.07.2020

Возможно, даже проще и гибче использовать numpy.nan_to_num:

numpy.nan_to_num(x, neginf=0) 

Out[1]: array([ 0.        ,  0.        , 37.49668579])
person pr94    schedule 18.12.2020

Используйте isneginf http://docs.scipy.org/doc/numpy/reference/generated/numpy.isneginf.html#numpy.isneginf

x[numpy.isneginf(x)] = 0
person YXD    schedule 10.01.2014