我有一个字典,里面有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')