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

如何将维度为(37, 121, 152)的三维地理时序数组切片并存储为含37个键的字典

解决方案:三维时序地理数组切片并存储为字典

没问题,我来给你梳理一下具体的实现步骤,不管你用的是NumPy还是xarray这类常用的地理数据处理库,都可以轻松实现需求:

假设你的数组用NumPy存储(最常见的场景)

1. 先准备数据(如果已经有现成数组,这步可以跳过)

import numpy as np

# 模拟你的三维数组:形状为(37, 121, 152),对应[时间, 纬度, 经度]
time_lat_lon_data = np.random.rand(37, 121, 152)

2. 切片并构建目标字典

这里给你两种键的命名方案,按需选择:

方案A:用数字索引作为键(比如0到36,对应第0天到第36天)

daily_data_dict = {}
# 遍历时间维度的每个索引
for day_idx in range(time_lat_lon_data.shape[0]):
    # 切片取出当天的纬度-经度二维数组
    daily_slice = time_lat_lon_data[day_idx, :, :]
    # 存入字典
    daily_data_dict[day_idx] = daily_slice

方案B:用可读性更强的命名作为键(比如"day_1"到"day_37")

daily_data_dict = {}
for day_num in range(1, 38):
    # 数组索引从0开始,所以要减1定位到对应时间片
    daily_slice = time_lat_lon_data[day_num - 1, :, :]
    daily_data_dict[f"day_{day_num}"] = daily_slice

3. 验证结果是否符合预期

你可以通过以下代码确认字典的结构:

# 打印所有键,应该看到37个元素
print(daily_data_dict.keys())
# 打印任意一个值的形状,应该是(121, 152)
print(daily_data_dict[0].shape)  # 对应方案A
# 或者 print(daily_data_dict["day_1"].shape) 对应方案B

如果你的数组用Xarray存储(地理数据常用库)

如果是用xarray的DataArray/Dataset格式,处理会更直观:

import xarray as xr

# 假设你的数据是xarray的DataArray
da = xr.DataArray(
    time_lat_lon_data,
    dims=["time", "lat", "lon"],
    coords={"time": range(37), "lat": range(121), "lon": range(152)}
)

# 用字典推导式快速生成目标字典
daily_data_dict = {f"day_{i+1}": da.isel(time=i) for i in range(37)}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 07:02:40