连接xarray.DataArray并添加新维度



我有一个字典,里面有1000个键,每个键有23个条目,每个条目都是一个xarray。DataArray。每个条目如下所示:

<xarray.DataArray 'time' (time: 23)>
array(['1861-01-16T12:00:00.000000000', '1861-02-15T00:00:00.000000000',
'1861-03-16T12:00:00.000000000', '1861-04-16T00:00:00.000000000',
'1861-05-16T12:00:00.000000000', '1861-06-16T00:00:00.000000000',
'1861-07-16T12:00:00.000000000', '1861-08-16T12:00:00.000000000',
'1861-09-16T00:00:00.000000000', '1861-10-16T12:00:00.000000000',
'1861-11-16T00:00:00.000000000', '1861-12-16T12:00:00.000000000',
'1862-01-16T12:00:00.000000000', '1862-02-15T00:00:00.000000000',
'1862-03-16T12:00:00.000000000', '1862-04-16T00:00:00.000000000',
'1862-05-16T12:00:00.000000000', '1862-06-16T00:00:00.000000000',
'1862-07-16T12:00:00.000000000', '1862-08-16T12:00:00.000000000',
'1862-09-16T00:00:00.000000000', '1862-10-16T12:00:00.000000000',
'1862-11-16T00:00:00.000000000'], dtype='datetime64[ns]')
Coordinates:
* time     (time) datetime64[ns] 1861-02-15 ... 1862-12-16T12:00:00
month    (time) int64 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11

我正在尝试连接所有这些条目,并获得一个维度为(1000,23(的新变量

看起来像

<xarray。DataArray"条目","时间"(条目:1000,时间:23(>

然后我希望能够将其写入Netcdf文件,以便使用.to_Netcdf.

如果我做

tt=xr.concat(entry[0],entry[1])

我得到以下信息:

<xarray.DataArray 'time' (time: 23)>
array(['1861-01-16T12:00:00.000000000', '1861-02-15T00:00:00.000000000',
'1861-03-16T12:00:00.000000000', '1861-04-16T00:00:00.000000000',
'1861-05-16T12:00:00.000000000', '1861-06-16T00:00:00.000000000',
'1861-07-16T12:00:00.000000000', '1861-08-16T12:00:00.000000000',
'1861-09-16T00:00:00.000000000', '1861-10-16T12:00:00.000000000',
'1861-11-16T00:00:00.000000000', '1861-12-16T12:00:00.000000000',
'1862-01-16T12:00:00.000000000', '1862-02-15T00:00:00.000000000',
'1862-03-16T12:00:00.000000000', '1862-04-16T00:00:00.000000000',
'1862-05-16T12:00:00.000000000', '1862-06-16T00:00:00.000000000',
'1862-07-16T12:00:00.000000000', '1862-08-16T12:00:00.000000000',
'1862-09-16T00:00:00.000000000', '1862-10-16T12:00:00.000000000',
'1862-11-16T00:00:00.000000000'], dtype='datetime64[ns]')
Coordinates:
* time     (time) datetime64[ns] 1861-01-16T12:00:00 1861-02-15 ... 1862-11-16
month    (time) int64 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11
<xarray.DataArray 'time' (time: 23)>
array(['1861-01-16T12:00:00.000000000', '1861-02-15T00:00:00.000000000',
'1861-03-16T12:00:00.000000000', '1861-04-16T00:00:00.000000000',
'1861-05-16T12:00:00.000000000', '1861-06-16T00:00:00.000000000',
'1861-07-16T12:00:00.000000000', '1861-08-16T12:00:00.000000000',
'1861-09-16T00:00:00.000000000', '1861-10-16T12:00:00.000000000',
'1861-11-16T00:00:00.000000000', '1861-12-16T12:00:00.000000000',
'1862-01-16T12:00:00.000000000', '1862-02-15T00:00:00.000000000',
'1862-03-16T12:00:00.000000000', '1862-04-16T00:00:00.000000000',
'1862-05-16T12:00:00.000000000', '1862-06-16T00:00:00.000000000',
'1862-07-16T12:00:00.000000000', '1862-08-16T12:00:00.000000000',
'1862-09-16T00:00:00.000000000', '1862-10-16T12:00:00.000000000',
'1862-11-16T00:00:00.000000000'], dtype='datetime64[ns]')
Coordinates:
* time     (time) datetime64[ns] 1861-02-15 ... 1862-12-16T12:00:00
month    (time) int64 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11

因此,我如何循环并将字典中的条目转换为xarran的新维度。DataArray并获取(1000,23(xarray。DataArray?谢谢

一些想法:

ds = xr.Dataset({'Entry_0': entry[0], 
'Entry_1': entry[1], 
'Entry_2': entry[2]
#... and so on
})

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

# create empty xarray dataset
ds = xr.Dataset({})
# add data arrays to xarray dataset
ds['Entry_0'] = entry[0]
ds['Entry_1'] = entry[1]
ds['Entry_2'] = entry[2]
# add so on

或者使用for循环来获得更简洁的代码:

# create empty list to store xarray data arrays
data_arrays = []
# for loop to add data arrays to list
for idx in range(len(entry)): 
da = entry[idx]
data_arrays.append(da)
# concatenate list of data arrays along new dimension into xarray dataset
ds = xarray.concat(data_arrays, dim='new_dim')

最新更新