You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组中的lon与lat坐标变量配对保存为CSV文件

问题:将经纬度数组配对保存为每行一对的CSV文件

原始数据

拥有lon和lat两个坐标数组,数据如下:

(array([-50.940605, -37.424145, -41.501717, -37.98916 , -60.632664,
       -38.158283, -58.0372  , -39.06596 , -60.815792, -49.303684,
       -38.46074 , -50.979015, -38.479317, -58.656593, -38.40213 ,
       -38.007423, -43.785126, -57.75844 , -42.781937, -74.90217 ,
       -34.498913, -49.227158, -96.485504, -72.128716, -39.414085],
      dtype=float32), 
 array([-15.90009   , -15.913551  , -15.7658    , -16.47591   ,
        -4.1940403 , -14.563205  ,  -6.032389  , -14.852597  ,
        -4.24735   ,  15.848547  , -14.71412   , -17.052591  ,
       -14.079368  ,  -5.9365387 , -14.50551   , -16.48979   ,
       -16.616753  ,  -0.23096395, -15.882113  ,  -5.0795455],
      dtype=float32))

期望输出格式

希望保存为每行一对经纬度的CSV:

-50.940605,-15.90009
-37.424145,-15.913551
-41.501717,-15.7658
-37.98916,-16.47591
-60.632664,-4.1940403
-38.158283,-14.563205
.... 以此类推

现有代码及错误输出

使用以下代码保存:

coord_file = (flag_lon.data[0:100], flag_lat.data[0:100]) # 从NetCDF文件提取的变量

np.savetxt('coord_file.csv', coord_file, delimiter=",", fmt="%s")
 
print(open("coord_file.csv").read()) 

得到的错误输出是将所有经度放在一行、所有纬度放在一行:

-50.940605,-37.424145,-41.501717,-37.98916,-60.632664,-38.158283,-58.0372,-39.06596,-60.815792,-49.303684,-38.46074,-50.979015,-38.479317,-58.656593,-38.40213,-38.007423,-43.785126
-15.90009,-15.913551,-15.7658,-16.47591,-4.1940403,-14.563205,-6.032389,-14.852597,-4.24735,15.848547,-14.71412,-17.052591,-14.079368,-5.9365387,-14.50551,-16.48979,-16.616753,-0.23096395,-15.882113,-5.0795455,-20.313402,15.771035,-7.3693175,-7.8538485,-14.27069,-16.976015,

解决方案

问题根源是传入np.savetxt的是两个一维数组组成的元组,它会将每个数组作为单独一行输出。要实现每行一对坐标,需要将两个数组按列拼接成二维数组,让每一行对应一组经纬度。

修改后的代码:

import numpy as np

# 提取前100个经纬度数据(若两个数组长度不一致,会自动截断到较短的长度)
lon = flag_lon.data[0:100]
lat = flag_lat.data[0:100]

# 将两个一维数组按列拼接成N行2列的二维数组
coord_pairs = np.column_stack((lon, lat))

# 保存到CSV文件,指定分隔符和浮点数格式
np.savetxt('coord_file.csv', coord_pairs, delimiter=",", fmt="%f")

# 验证输出结果
print(open("coord_file.csv").read())

补充说明

  • np.column_stack((lon, lat)) 会把两个一维数组组合成二维数组,结构为[[lon1, lat1], [lon2, lat2], ..., [lonN, latN]],正好符合CSV每行一对的要求。
  • 如果需要处理经纬度数组长度不一致的情况,可以先截取到共同长度:
    min_length = min(len(lon), len(lat))
    coord_pairs = np.column_stack((lon[:min_length], lat[:min_length]))
    

内容的提问来源于stack exchange,提问作者Saulo Carvalho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:47:03