我正在处理一个xarray.DataArray
sfc_p
和int
vert_res
的函数(其中第一个代表表面压力场而第二个代表一个数字垂直水平),计算所有垂直水平的压力,添加坐标,尺寸和属性,并输出xarray.DataArray
pressure
。
计算工作正常,但我的问题如下:
sfc_p
的示例可能是:
<xarray.DataArray 'sp' (time: 1, ens: 51, lat: 66, lon: 131)>
dask.array<shape=(1, 51, 66, 131), dtype=float32, chunksize=(1, 1, 66, 131)>
Coordinates:
* lon (lon) float32 -100.0 -99.0 -98.0 -97.0 -96.0 -95.0 -94.0 -93.0 ...
* lat (lat) float32 85.0 84.0 83.0 82.0 81.0 80.0 79.0 78.0 77.0 76.0 ...
* ens (ens) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
* time (time) datetime64[ns] 2016-11-02T12:00:00
Attributes:
units: Pa
long_name: Surface pressure
standard_name: surface_air_pressure
cf_short_name: sp
short_name: sp
grid_type: regular_ll <xarray.DataArray 'sp' (time: 1, ens: 51, lat: 66, lon: 131)>
现在我希望输出数组能够接管大多数这些属性,还有一个额外的维度(在time
和ensemble
之后)和坐标hybrid
,这只是range(1, vert_res + 1)
并修改了一些属性,例如
<xarray.DataArray 'sp' (time: 1, ens: 51, hybrid:137, lat: 66, lon: 131)>
dask.array<shape=(1, 51, 137, 66, 131), dtype=float32, chunksize=(1, 1, 137, 66, 131)>
Coordinates:
* lon (lon) float32 -100.0 -99.0 -98.0 -97.0 -96.0 -95.0 -94.0 -93.0 ...
* lat (lat) float32 85.0 84.0 83.0 82.0 81.0 80.0 79.0 78.0 77.0 76.0 ...
* hybrid (hybrid) int32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
* ens (ens) int32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
* time (time) datetime64[ns] 2016-11-02T12:00:00
Attributes:
units: Pa
long_name: modified
standard_name: modified
cf_short_name: modified
short_name: modified
grid_type: modified
我目前正在为值计算np.ndarray pressureVals
(具有正确的输出形状),然后用此初始化我的输出xarray.DataArray
。
但即使经过几个小时阅读xArray
文档,我还没有找到一种方法来实现添加信息和元数据的简单任务,我想我遗漏了一些完全基本的东西。有人能指出我正确的方向吗?
答案 0 :(得分:0)
更改属性
Predicate<List<T>>
您可以使用http://xarray.pydata.org/en/stable/generated/xarray.DataArray.expand_dims.html添加维度,同时查看numpy文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.expand_dims.html