【问题标题】:Python Interpolating time, lat, and lonPython 插值时间、纬度和经度
【发布时间】:2015-01-16 20:51:38
【问题描述】:

我无法确定 python 是否是插入我拥有的数据集的最佳选择

**lat   lon    time**
   x1    y1    3:02(t1)
            
       
   x2    y2    3:05(t2)




   x3    y3    3:10(t3)

 
   x4    y4    3:13(t4)

我留了空间来强调我在寻找什么。我希望以 1 秒的间隔填补缺失的时间。所以我认为我需要做的是 t4-t1 以获得 11 个相等的空间,将时间转换为秒以使计算更容易。那么图形应该是这样的:

**lat   lon    time**

   x1    y1    3:02(t1)
   a      b    3:03
   c      d    3:04
   x2    y2    3:05(t2)
               3:06
               3:07
               3:08
               3:09
   x3    y3    3:10(t3)
               3:11
               3:12
   x4    y4    3:13(t4)

在此之后,我正在寻找我新创建的每一秒的纬度和经度。所以在 x2,y2 和 x1,y1 之间我想找到 a,b,c,d 的值,这将是一个插值的 lat 和 lon。

有没有办法在每组之间没有一致的值的情况下做到这一点?

【问题讨论】:

标签: python interpolation


【解决方案1】:

python 的numpy 库具有内置的插值功能。请注意,在此示例中,我使用整数作为时间。您应该将时间转换为数字数组(例如秒),以便 numpy.interp 工作。

import numpy as np

times = [2, 5, 10, 13]
lat = [1.5, 2, 4, 7]
lon = [3, 2, 1, -2]
t = np.arange(2, 14)

latint = np.interp(t, times, lat)
lonint = np.interp(t, times, lon)
for pos in zip(latint, lonint, t):
    print(pos)

应该打印:

(1.5, 3.0, 2)
(1.6666666666666667, 2.6666666666666665, 3)
(1.8333333333333333, 2.3333333333333335, 4)
(2.0, 2.0, 5)
(2.3999999999999999, 1.8, 6)
(2.7999999999999998, 1.6000000000000001, 7)
(3.2000000000000002, 1.3999999999999999, 8)
(3.6000000000000001, 1.2, 9)
(4.0, 1.0, 10)
(5.0, 0.0, 11)
(6.0, -1.0, 12)
(7.0, -2.0, 13)

【讨论】:

  • 谢谢罗兰!我开始跟得上一点。如果我想为 Lat、Lon 和 Time 导入 CSV,该怎么办?然后我需要根据变量推断变量吗?
  • 我怎么知道?我不知道 CSV 文件中有什么,也不知道你想用它做什么......
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
相关资源
最近更新 更多