RuntimeWarning: недопустимое значение, встречающееся в double_scalars - без numpy - PullRequest
1 голос
/ 25 марта 2020

Я получаю RuntimeWarning: invalid value encountered in double_scalars в следующем коде:

resident_specific_occupation_chances[iii] = (resident_specific_occupation_chances[iii]/summed)*((1-unemployment_chance)/1)

Я действительно не понимаю, почему это происходит. Я много читаю о двойных скалярных предупреждениях, но для меня это не имеет смысла.

Где возникает эта ошибка? В левой части уравнения при назначении нового значения для моего элемента списка? Или с правой стороны во время расчета?

Я не использую numpy здесь.

Как я могу предотвратить это? Я не хочу отключать предупреждения.

Я пытался восстановить проблему в простой форме, но предупреждение не появляется:

test_list = [0.05, 0.2, 0.1, 0.3]

summed = sum(test_list[:3])

excluded = 0.3

for i in range(len(test_list)-1):
    test_list[i] = (test_list[i]/summed)*((1-excluded)/1)

print(test_list)
>>>>[0.1, 0.4, 0.2, 0.3]

1 Ответ

0 голосов
/ 25 марта 2020

Ошибка просто используется для указания деления, где знаменатель имеет значение 0, например, ваши данные каким-то образом содержат неправильные значения, например, вы пытаетесь взять квадрат root отрицательных чисел или 1 / a, где a (который является массивом) содержит нули.

RuntimeWarning: divide by zero encountered in double_scalars

Я не могу воспроизвести ту же ошибку из приведенного выше кода, как вы упомянули, поэтому мне сложно отладить точную проблему.

Я бы посоветовал отладить ваш основной код, переходя от строки к строке и разбираясь в происходящих числовых операциях. После этого вы сможете точно сказать, где это происходит.

...