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

Python中如何将三维温度数组平均为二维数组(NetCDF数据处理)

实现NetCDF日平均温度计算与等值线绘制

1. 读取NetCDF数据

先导入所需库,通过netCDF4.Dataset读取文件及目标变量:

import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs

# 打开NetCDF文件,替换为你的文件路径
file = nc.Dataset('your_file.nc', 'r')

# 读取温度、经度、纬度变量
tdisk = file.variables['tdisk'][:,:,:]  # 形状(68,52,46)
lons = file.variables['lons'][:,:]      # 形状(52,46)
lats = file.variables['lats'][:,:]      # 形状(52,46)

# 关闭文件
file.close()

2. 计算日平均温度

对扫描维度(第0轴,对应nscans)求均值,得到(52,46)的日平均温度数组:

# 沿扫描维度计算均值
daily_avg_tdisk = np.mean(tdisk, axis=0)

3. 绘制等值线图

根据需求选择带地理投影的专业绘图,或基础二维等值线图:

带地理投影的等值线图(推荐)

结合cartopy绘制符合地理坐标的等值线图:

# 创建带投影的绘图对象
fig, ax = plt.subplots(figsize=(10,6), subplot_kw={'projection': ccrs.PlateCarree()})

# 添加地图基础元素
ax.coastlines()
ax.add_feature(ccrs.feature.LAND, edgecolor='black')

# 绘制等值线填充
contour = ax.contourf(lons, lats, daily_avg_tdisk, levels=20, cmap='coolwarm', transform=ccrs.PlateCarree())

# 添加色标与标签
plt.colorbar(contour, ax=ax, label='Temperature (K)')
ax.set_title('Daily Average Tdisk')
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')

plt.show()

基础二维等值线图

若无需地理投影,可直接绘制数值等值线:

fig, ax = plt.subplots(figsize=(10,6))

contour = ax.contourf(lons, lats, daily_avg_tdisk, levels=20, cmap='coolwarm')
plt.colorbar(contour, label='Temperature (K)')

ax.set_title('Daily Average Tdisk')
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')

plt.show()

注意:

  • 替换your_file.nc为实际文件路径
  • 根据温度数据实际单位调整色标标签(如°C)
  • 未安装cartopy可通过pip install cartopy安装,或直接使用基础绘图方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:01:03