python - 将 numpy 数组作为变量添加到 Xarray 数据集

标签 python numpy python-xarray

这似乎是一个非常基本的操作,但我不知道如何使用 xarray 文档来完成它。

我有一个 xarray 数据集:

dss
<xarray.DataArray (y: 1000, x: 1334)>
dask.array<shape=(1000, 1334), dtype=uint8, chunksize=(222, 58)>
Coordinates:
    band     int32 1
  * y        (y) float64 2.218e+06 2.218e+06 2.218e+06 2.218e+06 2.218e+06 ...
  * x        (x) float64 1.891e+06 1.891e+06 1.891e+06 1.891e+06 1.891e+06 ...
Attributes:
    transform:   (30.0, 0.0, -2493045.0, 0.0, -30.0, 3310005.0, 0.0, 0.0, 1.0)
    crs:         +ellps=GRS80 +lat_0=23 +lat_1=29.5 +lat_2=45.5 +lon_0=-96 +n...
    res:         (30.0, 30.0)
    is_tiled:    1
    nodatavals:  (nan,)

和一个具有正确维度的 numpy 数组:

print(np.shape(nmap))
(1000, 1334)
nmap
array([[ 0.15,  0.1 ,  0.15, ...,  0.05,  0.05,  0.02],
       [ 0.15,  0.1 ,  0.05, ...,  0.05,  0.05,  0.05],
       [ 0.1 ,  0.15,  0.15, ...,  0.05,  0.05,  0.02],
       ..., 
       [ 0.02,  0.02,  0.02, ...,  0.02,  0.02,  0.02],
       [ 0.02,  0.09,  0.09, ...,  0.02,  0.02,  0.02],
       [ 0.02,  0.09,  0.09, ...,  0.02,  0.02,  0.02]])

我想将数组添加到数据集中。我的最终目标是使用 xy 进行空间插值,以在新网格上提取 nmap 的插值。

最佳答案

您想创建一个包含您的 numpy 数组 nmap 的数据集吗? 或者你想做一个算术dss + nmap

对于前一种情况, 您需要先从 dss 中创建一个 Dataset 并将 nmap 分配给它, 因为您的 dss 不是 Dataset 而是 DataArray

要从DataArray 生成Dataset,您可以传递一个将数组名称映射到DataArray 对象的字典。 如果您的数组不是 DataArray 而是 numpy 数组或 dask 数组,则您需要一个元组 (dimensions, array, [attribute])。

ds = xr.Dataset({'dss': dss, 'nmap': (('y', 'x'), nmap)})

或者另一种做同样事情的方法是

ds = xr.Dataset({})
ds['dss'] = ds
ds['nmap'] = (('y', 'x'), nmap)

对于后一种情况,只需做

dss + nmap

关于python - 将 numpy 数组作为变量添加到 Xarray 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51196438/

相关文章:

python - Keras:val_loss 正在增加,评估损失太高

python - 在旧式 python 类上使用属性会导致问题吗

python - 将 RGBA numpy 数组转换为二进制 2d numpy 数组

python - OpenCV calcOpticalFlowFarneback:如何从特定像素提取速度矢量值

python-xarray - xarray - 如何重命名 DataArray 对象上的维度

python-xarray - xarray.open_mfdataset 用于一小部分变量

python - 在 xarray 中按坐标进行子集化

python - 给定一个字符串,调用同名的方法

python - 如何获取属于所有 numpy 数组的项目?

python - tesseract 中的 TSV 和 TXT 输出