大家好,我是程序员晚枫。

天气预报越来越准,背后有 Python 的功劳。

NASA、欧洲中期天气预报中心都用 Python。

今天讲 Python 在气象学的应用。


一、Python 在气象学的 5 大应用

应用用途
数据处理NumPy、Pandas气象数据清洗
可视化Matplotlib、Cartopy天气图、地图
数值模拟NumPy、SciPy大气模拟
机器学习scikit-learn、PyTorch天气预报
高性能计算Dask、Numba大规模并行

二、5 大核心库

库 1:NumPy

  • 数值计算基础
  • 处理气象数据必备
1
2
3
4
5
6
import numpy as np

# 气温数据
temps = np.array([20, 22, 25, 28, 30])
print(np.mean(temps)) # 25.0 平均气温
print(np.std(temps)) # 3.4 标准差

库 2:Pandas

  • 数据分析
  • 时间序列分析
1
2
3
4
5
import pandas as pd

# 读取气象数据
df = pd.read_csv('weather.csv', parse_dates=['date'])
print(df.describe())

库 3:Matplotlib

  • 绘图
  • 温度、降水图

库 4:Cartopy

  • 地理地图
  • 天气图必备
1
2
3
4
5
6
7
import cartopy.crs as ccrs
import matplotlib.pyplot as plt

ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines()
ax.stock_img()
plt.show()

库 5:MetPy

  • 专门的气象库
  • 计算露点、风场等

三、5 大真实应用场景

场景 1:温度预测

用 LSTM 预测温度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import torch
import torch.nn as nn

class WeatherLSTM(nn.Module):
def __init__(self, input_size, hidden_size):
super().__init__()
self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)
self.linear = nn.Linear(hidden_size, 1)

def forward(self, x):
out, _ = self.lstm(x)
return self.linear(out[:, -1, :])

# 训练
model = WeatherLSTM(input_size=5, hidden_size=64)
# ... 训练过程

场景 2:降水预测

用卷积神经网络

1
2
3
# 用卫星图像预测降水
# 输入:卫星云图
# 输出:降水量

场景 3:极端天气预警

实时检测

1
2
# 检测飓风、龙卷风
# 实时报警

场景 4:气候变化研究

长期数据分析

1
2
# 分析 100 年气温变化
# 检测趋势

场景 5:空气质量预测

PM2.5 预测

1
# 预测未来 7 天空气质量

四、5 大真实机构案例

案例 1:NASA

NASA Goddard Space Flight Center

案例 2:欧洲中期天气预报中心(ECMWF)

  • 使用:Python + Fortran
  • 任务:10 天全球预报
  • 量级:每天 1 亿次观测
  • 精度:7 天误差 4°C

案例 3:中国气象局

  • 使用:Python + C++
  • 任务:全国天气预报
  • 量级:4000+ 站点

案例 4:NOAA(美国海洋和大气管理局)

  • 使用:Python 全栈
  • 任务:飓风、洪水预警
  • 量级:覆盖美国全境

案例 5:日本气象厅

  • 使用:Python
  • 任务:地震、海啸预警
  • 精度:分钟级

五、5 大具体技术

技术 1:WRF 模式

Weather Research and Forecasting

  • 中尺度气象模式
  • Python 包装(wrf-python)
  • 预测 1-10 天

技术 2:ERA5 数据

欧洲中期再分析数据

  • 1940 年至今
  • 全球网格数据
  • 免费

技术 3:GFS 数据

美国全球预报系统

  • 每天 4 次更新
  • 16 天预报
  • 开源

技术 4:NetCDF 格式

气象数据标准格式

1
2
3
4
5
import xarray as xr

# 读取 NetCDF
ds = xr.open_dataset('weather.nc')
print(ds.temperature)

技术 5:xarray

多维数组库

1
2
3
4
5
6
7
8
9
10
import xarray as xr
import numpy as np

# 创建多维数据
ds = xr.Dataset(
{'temperature': (['time', 'lat', 'lon'], np.random.rand(10, 5, 5))},
coords={'time': pd.date_range('2026-01-01', periods=10),
'lat': [30, 35, 40, 45, 50],
'lon': [100, 110, 120, 130, 140]}
)

六、5 大可视化技术

技术 1:温度图

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np

temps = np.random.rand(10, 10)
plt.imshow(temps, cmap='RdYlBu_r')
plt.colorbar()
plt.title('温度分布')
plt.show()

技术 2:等值线图

1
2
3
4
5
6
7
8
9
10
11
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

plt.contour(X, Y, Z)
plt.colorbar()
plt.show()

技术 3:风场图

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np

u = np.random.rand(10, 10) # 东西风
v = np.random.rand(10, 10) # 南北风

plt.quiver(u, v)
plt.show()

技术 4:地图叠加

1
2
3
4
5
6
7
8
import cartopy.crs as ccrs
import matplotlib.pyplot as plt

ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines()
ax.stock_img()
# 叠加气象数据
plt.show()

技术 5:3D 可视化

1
2
3
4
5
6
7
8
9
10
11
12
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x, y = np.meshgrid(np.linspace(-5, 5, 50), np.linspace(-5, 5, 50))
z = np.sin(np.sqrt(x**2 + y**2))

ax.plot_surface(x, y, z)
plt.show()

七、5 大机器学习应用

应用 1:温度预测

  • LSTM、GRU
  • 7 天准确度 80%+

应用 2:降水预测

  • CNN、Transformer
  • 短期降水 90%+

应用 3:飓风路径

  • 图神经网络
  • 路径预测 80% 准确

应用 4:空气质量

  • 随机森林、XGBoost
  • PM2.5 预测 85%+

应用 5:极端天气

  • 异常检测
  • 提前 24 小时预警

八、5 个 Python 气象库推荐

库 1:MetPy

库 2:xarray

  • 多维数组
  • NetCDF 必备

库 3:Cartopy

库 4:cfgrib

  • GRIB 数据
  • 天气预报

库 5:Salem

  • 地理数据处理

九、给 Python 气象学学习者的 4 个建议

建议 1:先学 NumPy + Pandas

  • 1 周
  • 基础

建议 2:再学可视化

  • Matplotlib + Cartopy
  • 1 周

建议 3:学机器学习

  • scikit-learn、PyTorch
  • 关键

建议 4:参与开源

  • MetPy、xarray
  • 简历加分

十、5 个真实数据源

数据源 1:ERA5

数据源 2:GFS

数据源 3:GFS Analysis

  • 实时分析
  • 每小时更新

数据源 4:气象站数据

  • 中国气象局
  • 4000+ 站点

数据源 5:卫星数据

  • Himawari、NOAA
  • 全球覆盖

十一、最后的最后

Python 气象学,3 句话总结

  1. Python 是气象学的事实标准:NASA、ECMWF 都用
  2. NumPy + Pandas + Cartopy:3 大基础
  3. 机器学习是趋势:LSTM、CNN 让预报更准

学 Python 6 年,我学到的最重要的事:

"Python 在科学计算领域,已经是事实标准。"

气象学、海洋学、天文学、材料学、生物医学——

Python 都有用武之地。

学 Python + 专业知识 = 不可替代

会 Python 的气象学家,比不会的多 3 倍工资**。**


相关阅读


科技不高冷,AI很好用。
我是晚枫,关注我,带我一起玩AI!

🎓 AI 编程实战课程

程序员晚枫专注AI编程培训,通过 《50讲 · AI编程训练营》,让小白也能用AI做出实际项目。帮你从零上手!