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

Python中替换列表值的更优方式?NOAA极光数据经度转换优化

更优雅的极光预报数据经度转换实现

方法1:用数学公式简化原地修改

原代码的条件判断可以用通用数学公式替代,无需分支逻辑就能完成经度范围转换,代码更简洁且覆盖所有边界情况:

import requests

r = requests.get("https://services.swpc.noaa.gov/json/ovation_aurora_latest.json")
data = r.json()

for coord in data['coordinates']:
    # 公式直接将0-360经度转为-180至180范围
    coord[0] = (coord[0] + 180) % 360 - 180

这个公式能处理所有特殊值:360°转为0°、180°保持180°、190°转为-170°,完全满足需求。

方法2:列表推导式生成新列表(不修改原数据)

如果需要保留原始数据,使用列表推导式生成转换后的新列表,更符合Python的简洁风格,同时避免原地修改的副作用:

import requests

r = requests.get("https://services.swpc.noaa.gov/json/ovation_aurora_latest.json")
data = r.json()

# 解构每个坐标元素,转换后重新组合成新列表
converted_coords = [
    [(lon + 180) % 360 - 180, lat, value] 
    for lon, lat, value in data['coordinates']
]

# 若需要替换原数据的coordinates字段
data['coordinates'] = converted_coords

方法3:numpy批量处理(适合大数据量)

如果数据集规模较大,用numpy的向量运算能力能显著提升处理效率,远快于Python原生循环:

import requests
import numpy as np

r = requests.get("https://services.swpc.noaa.gov/json/ovation_aurora_latest.json")
data = r.json()

# 将坐标列表转为numpy数组
coords_array = np.array(data['coordinates'])
# 批量处理经度列(数组第一列)
coords_array[:, 0] = (coords_array[:, 0] + 180) % 360 - 180
# 转回列表格式以保持原数据结构
data['coordinates'] = coords_array.tolist()

内容的提问来源于stack exchange,提问作者Stefan Gofferje

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:25:54