2017-05-11 32 views
0

我有一個xarray.Dataarray有4個座標: fp, station, run_date, elnu如何在DataArray(xarray)中組合兩個座標值?

尺寸當前(順序相同):(123261417

站的值有 「101470」 和 「108700」,希望爲了將這兩個元素的尺寸合起來(1,1,3261*2,417),我想重塑它們。問題是,我無法弄清楚如何做到這一點,以及如何解決問題,然後他們會有相同的座標(如果我會像他們將有同一站)。

也許我只是沒有找到合適的詞搜索谷歌(不英語)。感謝任何幫助。

回答

1

您正在尋找的功能在xarray的.stack()方法中。例如:

>>> import xarray 

>>> import numpy as np 

>>> da = xarray.DataArray(np.zeros((1, 2, 3261, 417)), dims=['fp', 'station', 'run_date', 'elnu']) 

>>> da 
<xarray.DataArray (fp: 1, station: 2, run_date: 3261, elnu: 417)> 
array([[[[ 0., ..., 0.], 
     ..., 
     [ 0., ..., 0.]], 

     [[ 0., ..., 0.], 
     ..., 
     [ 0., ..., 0.]]]]) 
Dimensions without coordinates: fp, station, run_date, elnu 

>>> da.stack(station_date=['station', 'run_date']) 
<xarray.DataArray (fp: 1, elnu: 417, station_date: 6522)> 
array([[[ 0., 0., ..., 0., 0.], 
     [ 0., 0., ..., 0., 0.], 
     ..., 
     [ 0., 0., ..., 0., 0.], 
     [ 0., 0., ..., 0., 0.]]]) 
Coordinates: 
    * station_date (station_date) MultiIndex 
    - station  (station_date) int64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... 
    - run_date  (station_date) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 
Dimensions without coordinates: fp, elnu 

跟進.transpose()和/或.expand_dims()重新排列維度以希望的順序。