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

NumPy加载文本:提取经纬度浮点数生成二维数组的格式设置

提取带标签的经纬度数据生成二维NumPy数组

嘿,作为刚上手NumPy和Python的新手,这种带标签的经纬度数据提取需求其实挺常见的,我来一步步教你怎么搞定~

核心思路

你的数据里每个lat和lon是成对出现的(lat0对应lon0,lat1对应lon1...),所以我们只需要:

  1. 把所有浮点数从文本里提取出来
  2. 每两个浮点数一组(第一个是纬度,第二个是经度)
  3. 转成NumPy二维数组,让第0列存纬度、第1列存经度

方法一:正则提取 + NumPy重塑

这种方法步骤清晰,不管数据是字符串还是文本文件都适用:

1. 导入需要的库

import re
import numpy as np

2. 处理字符串形式的数据

如果你的数据直接存在字符串变量里:

# 示例数据
data_str = "lat0 37.792480, lon0 -122.397450 lat1 39.792480, lon1 -132.397450"

# 用正则提取所有带正负号的浮点数
float_strings = re.findall(r'-?\d+\.\d+', data_str)
# 把字符串转成float类型的列表
floats_list = list(map(float, float_strings))

# 把列表重塑为二维数组:自动计算行数,每行固定2个元素(lat, lon)
coords_array = np.array(floats_list).reshape(-1, 2)

3. 处理文本文件里的数据

如果数据存在data.txt文件中,先读取文件内容再重复提取步骤:

with open('data.txt', 'r') as f:
    data_str = f.read()

# 后续提取和重塑步骤和上面完全一致
float_strings = re.findall(r'-?\d+\.\d+', data_str)
floats_list = list(map(float, float_strings))
coords_array = np.array(floats_list).reshape(-1, 2)

方法二:清理文本 + NumPy原生加载工具

如果你想用NumPy自带的加载函数,可以先把文本里的标签、标点清理掉,再用loadtxt读取:

import numpy as np
import re

with open('data.txt', 'r') as f:
    data_str = f.read()

# 把所有非数字、非小数点、非负号的字符替换成空格
cleaned_data = re.sub(r'[^\d.-]', ' ', data_str)
# 分割成浮点数数组后重塑为目标格式
coords_array = np.loadtxt(cleaned_data.split()).reshape(-1, 2)

验证结果

运行完上面的代码后,coords_array就是你要的二维数组:

print(coords_array)
# 输出:
# [[  37.79248  -122.39745]
#  [  39.79248  -132.39745]]

第0列是所有纬度值,第1列是对应的经度值,完全匹配你的需求~

内容的提问来源于stack exchange,提问作者Nixit Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:47:21