【发布时间】:2019-09-22 06:00:42
【问题描述】:
我有一组时间步长(以秒为单位)和一组位置(以纬度为单位)。两个数组大小相同,N=36。我正在计算两个数组之间的 np.gradient ,当任何两个连续时间步长相同时返回 nan 值。但是当我使用一个常数标量作为可变参数值来计算梯度时,我得到了正确的数据输出。我需要找到一种方法来创建具有不同时间步长的正确梯度输出。
使用 Python 3.4 和 Numpy 1.14
我尝试使用原始时间步长数组计算梯度,当值相同时,该数组返回 nan 值。接下来,我尝试使用单个标量值作为可变参数输入来计算梯度,这给了我正确的输出。然后,我尝试将 vararg 设置为具有所有相同时间步长值的 numpy 数组,该数组返回所有 -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 没有帮助。
【问题讨论】: