Как заменить ноль на небольшое число? - PullRequest
0 голосов
/ 09 октября 2019

Я хочу заменить делитель на очень маленькое число, если оно равно 0. Я делаю операцию, которая выглядит следующим образом:

A = pow(X,2)/(q - P)

Он вычисляет эти значения и сохраняет их в массиве (дляпетлевой). Тем не менее, в определенных местах q - P = 0, который выдает ошибку во время выполнения. Я знаю, что есть работа вокруг, я не хочу этого. Как я могу установить q - P на очень маленькое число в случае q - P = 0 для конкретной итерации.

Ответы [ 3 ]

1 голос
/ 09 октября 2019

Я бы рекомендовал использовать попытку, кроме блока, и установить A на другое значение, если возникает ошибка ZeroDivisionError:

try:
    A = (pow(X,2))/(q - P))
except ZeroDivisionError:
    A = 99999999999 #big nuber because devision by a small number
                    # you can also set A to infinity with `A = np.inf`

Если это не вариант для вас (например, вы действительно хотитечтобы изменить q или P, а не только A) вы можете просто добавить небольшое число к q или P

if q == P:
    q+= 0.00000000000001 # or P+=small_number or q-=small_number or P-=small_number
1 голос
/ 09 октября 2019

Вы можете использовать следующий трюк:

diff = q - P or .001
A = pow(X, 2) / diff

или

A = pow(X, 2) / (q - P or .001)
1 голос
/ 09 октября 2019

Вы можете использовать встроенный, если:

very_small_number = 0.001

A = pow(X, 2) / ( q - P if q != P else very_small_number )

...