Один ответ, который я нашел, чтобы найти связанный с ним вопрос, заключался в том, чтобы манипулировать выходом на основе того, был ли знаменатель нулевым или нет.
Предположим, что arrayA
и arrayB
были инициализированы, но arrayB
имеет некоторые нули. Мы могли бы сделать следующее, если мы хотим безопасно вычислить arrayC = arrayA / arrayB
.
В этом случае, когда у меня есть деление на ноль в одной из ячеек, я устанавливаю ячейку равным myOwnValue
, который в этом случае был бы равен нулю
myOwnValue = 0
arrayC = np.zeros(arrayA.shape())
indNonZeros = np.where(arrayB != 0)
indZeros = np.where(arrayB = 0)
# division in two steps: first with nonzero cells, and then zero cells
arrayC[indNonZeros] = arrayA[indNonZeros] / arrayB[indNonZeros]
arrayC[indZeros] = myOwnValue # Look at footnote
. Сноска: ретроспективно эта строка не нужна в любом случае, так как arrayC[i]
создается на ноль. Но если бы это было так myOwnValue != 0
, эта операция могла бы что-то сделать.