Оставить нули при делении на ноль, вместо 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)