【问题标题】:Adding dimension, coordinates and attributes to dataArray向 dataArray 添加维度、坐标和属性
【发布时间】:2018-11-21 13:11:23
【问题描述】:

我正在研究一个函数,它需要一个 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)>

现在我希望输出数组能够接管这些属性中的大部分,并增加一个维度(在timeensemble 之后)和坐标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 文档数小时后,我还没有找到一种方法来完成添加信息和元数据的简单任务,而且我认为我遗漏了一些完全基本的东西。有人能指出我正确的方向吗?

【问题讨论】:

    标签: attributes coordinates dimension expansion python-xarray


    【解决方案1】:

    改变它的属性 da.attrs['long_name'] = 'new_long_name'

    您也许可以使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      相关资源
      最近更新 更多