填充xarray数据集变量等于维度的形状
我刚开始使用xarray,并且遇到了在文档中找不到的特定任务的麻烦。我创建了一个包含两个维度的数据集:
ds = xr.Dataset() ds['year'] = np.arange(100) ds['simulation'] = np.arange(1000)
我想接着一个数据变量添加到的数据集np.random.rand()
与一年和模拟的坐标和等于尺寸如(1000,100)相同的形状。
我做到这一点的方式是:
ds['result'] = (('simulation','year'),np.random.rand(1000,100))
然而,必须在随机函数中指定形状似乎很奇怪,我确信xarray有一些不可思议的方式来做到这一点,我无法弄清楚。我希望能够实现的是这样的:
ds['result'] = (('simulation','year'),np.random.rand())
因此,随机函数的形状从尺寸上被引入。
我会很感激我能得到的任何帮助。
对于这种类型的构造,通常值得明确的是创建尺寸,坐标和变量。我认为这是你要做的。
ds = xr.Dataset()
ds['result'] = xr.DataArray(np.random.rand(1000,100),
dims=('simulation', 'year'),
coords={'simulation': np.arange(1000), 'year': np.arange(100)})
Xarray确实允许使用一些快捷方式的构造函数,但是当你刚刚开始时,它可能不那么容易混淆标准构造函数。
编辑1
这听起来像你真的想在结果数组的构造函数中使用year / simulation维度的大小。这可以这样做:
ds = xr.Dataset() ds.coords['year'] = xr.DataArray(np.arange(100), dims=('year',)) ds.coords['simulation'] = xr.DataArray(np.arange(1000), dims=('simulation',)) ds['result'] = xr.DataArray(np.random.rand(ds.dims['simulation'], ds.dims['year']), dims=('simulation', 'year'))
原文地址https://stackoverflow.com/questions/50752154/fill-xarray-dataset-variables-equal-to-shape-of-dimensions