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

Python按条件校正数组经度值并保存输出的问题求解

问题原因
  • 核心逻辑错误:遍历温度数组的每个值时,每次都对整个经度数组做整体赋值,最终lons2的取值完全由最后一行的温度值决定,完全没有实现逐行判断、逐行校正的需求。你给出的样例数据最后一行温度为248.11>220,所以最终所有行的校正经度都和原经度一致,和预期效果不符。
  • 冗余循环:numpy自带向量化操作能力,无需手动写循环遍历数组,手动循环不仅代码冗余,还很容易出现逻辑错误。
修正代码(推荐向量化写法,效率更高)
import numpy as np

# 读取原始数据
data = np.loadtxt('Data.dat')
lats = data[:, 0]
lons = data[:, 1]
tirs = data[:, 2]

# 批量计算校正后经度
lons2 = lons.copy()
# 仅筛选温度小于220的行,对应经度加0.05
lons2[tirs < 220] += 0.05

# 拼接四列数据并保存
data_new = np.column_stack([lats, lons, tirs, lons2])
np.savetxt('Data_New.dat', data_new, fmt='%9.3f')
原循环写法的修正方案(仅做逻辑演示,不推荐使用)

如果你一定要保留循环写法,可以改为按索引遍历逐行修改:

import numpy as np

data = np.loadtxt('Data.dat')
lats = data[:, 0]
lons = data[:, 1]
tirs = data[:, 2]

lons2 = lons.copy()
# 按索引逐行判断
for idx in range(len(tirs)):
    if tirs[idx] < 220:
        lons2[idx] += 0.05

data_new = np.column_stack([lats, lons, tirs, lons2])
np.savetxt('Data_New.dat', data_new, fmt='%9.3f')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:18:03