У меня есть массив временных шагов (в секундах) и массив местоположений (в широте). Оба массива имеют одинаковый размер с N = 36. Я вычисляю градиент np. между двумя массивами, который возвращает значения nan, когда любые два последовательных временных шага имеют одинаковое значение. Но когда я вычисляю градиент, используя постоянный скаляр в качестве значения vararg, я получаю правильный вывод данных. Мне нужно найти способ создать правильный выход градиента с различными временными шагами.
Использование Python 3.4 и Numpy 1.14
Я попытался вычислить градиент с моим исходным массивом временного шага, который возвращал значения nan, когда значения совпадают. Затем я попытался вычислить градиент с одним скалярным значением в качестве входа vararg, который дал мне правильный вывод. Затем я попытался установить vararg в виде пустого массива с одинаковыми значениями временного шага, который возвращал все значения -inf.
#Original Code:
dt = np.array([10800,10800,9900,5400,6300]) #delta time in seconds
x = np.array([-85.18,-85.80,-86.3,-87,-87.0]) #delta x in decimal degrees
dx_dt = np.gradient(x,dt)
#returns:
#[nan,nan, 4.8e-004,-3.1e-004,-2.19e-004]
#Test 1 - test with constant scalar
dx_dt = np.gradient(x,10800)
#returns:
#[-5.5e-5,-5.1e-5,-5.5e-5,-4.1e-5,-5.1e-5]
#Test 2 - test with constant array
dt = np.array([10800,10800,10800,10800,10800)]
dx_dt = np.gradient(x,dt)
#returns:
#[-inf,-inf,-inf,-inf,-inf]
Я ожидаю, что выход np.gradient (x, 10800) будет таким же, как np.gradient (x, np.array ([10800,10800,10800,10800,10800]))), но это не является.
Мне нужен вывод без значений nan или inf для работы следующей части кода, просто установка -inf или nans в 0 не поможет.