python - 创建一个玩具 3D 数组包含每小时频率、温度和纬度、经度坐标
问题描述
我想创建一个 3 维数据数组,该数组存储具有相应纬度和经度的温度数据以及每小时频率的时间。所以我做了如下编码;
np.random.seed(123)
temperature_3d = 15 + 10 * np.random.randn(24,4,4) # 3-dimensional
lat = np.random.uniform(low=-90, high=90, size=(1,4))
lon = np.random.uniform(low=-180, high=180, size=(1,4))
# round to two digits after decimal point
temperature_3d = np.around(temperature_3d, decimals=2)
lat , lon = np.around([lat, lon], decimals=2)
date_rng = pd.date_range(start='1/1/2018T01:00', end='1/2/2018', freq='H')
da = xr.DataArray(data=temperature_3d,
coords={"lat": (["x","y"], lat),
"lon": (["x","y"], lon),
"day": date_rng},
dims=["x","y","day"])
da
我得到这个错误,
ValueError: conflicting sizes for dimension 'x': length 24 on the data but length 1 on coordinate 'lat'
维度上它是错误的,我可以在不包括时间的情况下修复它,我的目标是创建一个具有 720x40x40 维度(timexlat,lonxtime)的数据数组。
我也是这种图书馆的新手。所以我会很感激这些建议。
解决方案
看起来形状需要正确匹配。
首先,由于您的温度数据的形状为 (24,4,4),
temperature_3d = 15 + 10 * np.random.randn(24,4,4) # 3-dimensional
你需要把日期放在你的昏暗中:
da = xr.DataArray(data=temperature_3d,
coords={"lat": (["x","y"], lat),
"lon": (["x","y"], lon),
"day": date_rng},
dims=["day","x","y"])
其次,您的 lat 和 lon 坐标具有根据 ["x","y"] 的形状,因此在示例中,您需要一个 4x4 网格来表示每个点的 lat,另一个 4x4 网格表示每个点的 lon . 为此,我们可以使用 np.meshgrid:
latgrid, longrid = np.meshgrid(lat,lon)
所以,完整的:
import numpy as np
import xarray as xa
np.random.seed(123)
temperature_3d = 15 + 10 * np.random.randn(24,4,4) # 3-dimensional
lat = np.random.uniform(low=-90, high=90, size=(4))
lon = np.random.uniform(low=-180, high=180, size=(4))
# round to two digits after decimal point
temperature_3d = np.around(temperature_3d, decimals=2)
lat , lon = np.around([lat, lon], decimals=2)
latgrid, longrid = np.meshgrid(lat,lon)
date_rng = pd.date_range(start='1/1/2018T01:00', end='1/2/2018', freq='H')
da = xa.DataArray(data=temperature_3d,
coords={"lat": (["x","y"], latgrid),
"lon": (["x","y"], longrid),
"day": date_rng},
dims=["day","x","y"])
da
推荐阅读
- windows - 在 Flutter 窗口中设置最小/最大屏幕尺寸
- javascript - 使用 Typescript 和 Live Server 设置 PIXI.js
- python - Pandas 删除行的优化
- flutter - 如何在 Flutter 屏幕中心的列表视图中对齐所有小部件?
- groovy - 在 Groovy 中 - 如何在确切的索引位置迭代版本列表并在 for 循环中进行比较?
- ios - 无法在 IOS 模拟器中运行 Flutter 项目(运行 pod install 时出错)
- javascript - 移动设备中的粘性标题外壳锚点问题
- c++ - 如何声明特征稀疏矩阵数组
- reactjs - NextJS 上的跨域 iframe 调整大小?
- javascript - 如何从“red”之类的字符串中获取 rgb 值?