Заменете -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
Без разбиране на списъка. Това е numpy индексиране с помощта на булев масив. В този случай: Елементи от 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