Почему я не могу избавиться от RuntimeWarning: неверное значение, встречающееся в true_divide - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь разделить массив смещений на сдвинутую версию самого себя.Массив содержит 0, поэтому, естественно, произойдет деление на ноль.Но я подумал, что вставка np.where поможет.Это не так.

import numpy as np

tpx = np.array([0.95, 0.9, 0.85, 0.80, 0.75, 0.0, 0.0, 0.0])
px = np.where(tpx[:-1]!=0, tpx[1:]/tpx[:-1], 0)

px = np.where(tpx[:-1]!=0, tpx[1:]/tpx[:-1], 0)
__main__:1: RuntimeWarning: invalid value encountered in true_divide
Out[4]: 
array([0.94736842, 0.94444444, 0.94117647, 0.9375    , 0.        ,
   0.        , 0.        ])

Я также пытался использовать np.isclose, как, например,

px = np.where(np.isclose(tpx[:-1], 0, atol=1e-12)==False, tpx[1:]/tpx[:-1], 0)

Но все равно выдает предупреждение.Как я могу избавиться от этого предупреждения?Результат, однако, выглядит хорошо.

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

1 Ответ

0 голосов
/ 19 мая 2018

работает, если вы заменяете нули на NaNs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...