【问题标题】:Python: how to combine two flat lists into a 2D array? [duplicate]Python:如何将两个平面列表组合成一个二维数组? [复制]
【发布时间】:2017-05-18 23:56:39
【问题描述】:

我有两个平面地理坐标列表(纬度、经度),我需要将它们组合成一个二维数组或矩阵。

它们现在存储在数据框中:

    lat         lon
0   48.010258   -6.156909
1   48.021648   -6.105887
2   48.033028   -6.054801
3   48.044384   -6.003691
4   48.055706   -5.952602
5   48.067017   -5.901447
6   48.078304   -5.850270
7   48.089558   -5.799114
8   48.100800   -5.747891

如何将这两个列表组合成一个二维数组,以便保留 lat-lon 对应关系?这些是普通数据:

lat=[48.01,48.02,48.03,48.04,48.05,48.06,48.07,48.08,48.10]
lon=[-6.15,-6.10,-6.05,-6.00,-5.95,-5.90,-5.85,-5.79,-5.74]

编辑

这些摘录的数据代表 (lat, long)(y, x) 地理地图。结合起来,它们再现了下图。你清楚地看到了预期结果的存在将不得不被剥夺一定宽度的数据的外部框架。所以这就像剪掉一张图片的外框,其宽度是 30 个数据点。

【问题讨论】:

  • 你想要什么结果?它可以通过一个简单的循环或zip 函数来完成。你有什么困难?

标签: python arrays


【解决方案1】:
list(zip(lat, long))

给了

[(48.01, -6.15), (48.02, -6.1), (48.03, -6.05), (48.04, -6.0), 
 (48.05, -5.95), (48.06, -5.9), (48.07, -5.85), (48.08, -5.79), (48.1, -5.74)]

更多关于ziphere

【讨论】:

  • 请检查我的编辑。我没能说出重要的话。
  • @CF84 你能再具体一点吗?我们对您的问题范围了解得越多,我们的答案就越相关。
  • @CF84 只要你有一个数据框df 有一个纬度列和一个经度列,你就可以做到list(zip(df.lat, df.lon))。我看不出从数据框中删除一些行会如何影响这一点。
【解决方案2】:

尝试使用 numpy 模块,即:np.column_stack 也许尝试一下,看看它是否能给你想要的结果/格式

>>> np.column_stack((lat, lon))

查看numpy.column_stack 希望这会有所帮助:)

【讨论】:

    【解决方案3】:

    您可以直接将它们显式添加到新列表中并像...一样分配它

    coordinates = [lat, lon]
    

    然后它会将coordinates 设置为...

    [
     [48.01,48.02,48.03,48.04,48.05,48.06,48.07,48.08,48.10],
     [-6.15,-6.10,-6.05,-6.00,-5.95,-5.90,-5.85,-5.79,-5.74]
    ]
    

    【讨论】:

      【解决方案4】:
      lat=[48.01,48.02,48.03,48.04,48.05,48.06,48.07,48.08,48.10]
      lon=[-6.15,-6.10,-6.05,-6.00,-5.95,-5.90,-5.85,-5.79,-5.74]
      mat = [[0]*2 for i in range(len(lat))]
      k=0
      for i, j in zip(lat, lon):
          mat[k][0]=i
          mat[k][1]=j
          k+=1
      print (mat) 
      

      【讨论】:

      • [0 for j in range(2)] 可以是 [0]*2,因为整数是不可变的。
      • @Jean-FrançoisFabre 完成:+1
      【解决方案5】:

      添加到Patrick Haugh的回答:

      np.array(list(zip(lat, lon)))
      

      将给予:

      array([[48.01, -6.15],
             [48.02, -6.1 ],
             [48.03, -6.05],
             [48.04, -6.  ],
             [48.05, -5.95],
             [48.06, -5.9 ],
             [48.07, -5.85],
             [48.08, -5.79],
             [48.1 , -5.74]])
      

      【讨论】:

        猜你喜欢
        • 2015-10-30
        • 1970-01-01
        • 2017-02-17
        • 2017-12-13
        • 2012-11-13
        • 1970-01-01
        • 2017-10-12
        • 1970-01-01
        • 2021-10-29
        相关资源
        最近更新 更多