Оставить нули при делении на ноль, вместо inf в Python через NumPy

Если дан массив, в котором есть нули, и нужно получить обратную величину, но, при этом, если ошибка деления на ноль или inf в случае использования Numpy - необходимо в новом массиве заменить inf на ноль.

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

Ответом будет [-1. inf 1.]. А нужно [-1. 0 1.], как получить? Пробовал через цикл, но никак не вышло.


Ответы (3 шт):

Автор решения: gil9red

Можно сделать замену inf на 0 через:

b[np.isinf(b)] = 0

Пример:

import numpy as np
a = np.array([-1, 0, 1])
b = 1 / a
print(b)
# [-1. inf  1.]

b[np.isinf(b)] = 0
print(b)
# [-1.  0.  1.]
→ Ссылка
Автор решения: timur

Воспользуйтесь функцией numpy.divide:

b = np.divide(1, a, where=a!=0)

a != 0 вернёт массив [True, False, True], поэтому 0 будет игнорироваться

→ Ссылка
Автор решения: shalor1k

Попробуйте данный способ:

import numpy as np
b = []
a = np.array([-1, 0, 1])
for i in a:
    if  i != 0:
        b.append(int(1/i))
    else:
        b.append(0)
print(b)
    
→ Ссылка