2016-10-26 6 views
1

모두xarray를 사용하여 "T"라는 변수를 읽는 방법은 무엇입니까?

이것은 FAQ 일 수 있지만 Google-fu는 나를 실패했습니다. 즉, 내가 xarray 라와 함께 작업 할 기상 모델에 의해 생성 된 파일에 읽기 :

In [4]: data = xr.open_dataset("test_old.nc4") 

In [5]: data 
Out[5]: 
<xarray.Dataset> 
Dimensions: (lat: 49, lev: 48, lon: 96, time: 1) 
Coordinates: 
    * lon  (lon) float64 -180.0 -176.2 -172.5 -168.8 -165.0 -161.2 -157.5 ... 
    * lat  (lat) float64 -90.0 -86.25 -82.5 -78.75 -75.0 -71.25 -67.5 ... 
    * lev  (lev) float64 1e+03 975.0 950.0 925.0 900.0 875.0 850.0 825.0 ... 
    * time  (time) datetime64[ns] 2000-04-15 
Data variables: 
    H  (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 
    O3  (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 
    OMEGA (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 
    PHIS  (time, lat, lon) float64 2.605e+04 2.605e+04 2.605e+04 ... 
    PS  (time, lat, lon) float64 6.984e+04 6.984e+04 6.984e+04 ... 
    QI  (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 
    QL  (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 
    QV  (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 
    RH  (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 
    SLP  (time, lat, lon) float64 9.973e+04 9.973e+04 9.973e+04 ... 
    T  (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 
    U  (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 
    V  (time, lev, lat, lon) float64 nan nan nan nan nan nan nan nan ... 

지금까지 너무 좋아. (공간에 대한 속성을 삭제했습니다.) 이제 상대 습도 인 RH를 참조하겠습니다.

In [8]: data.RH 
Out[8]: 
<xarray.DataArray 'RH' (time: 1, lev: 48, lat: 49, lon: 96)> 
array([[[[    nan,    nan,    nan, ..., 
         nan,    nan,    nan], 
     [    nan,    nan,    nan, ..., 
         nan,    nan,    nan], 
     [    nan,    nan,    nan, ..., 
         nan,    nan,    nan], 
     ..., 
     [ 9.84245896e-01, 9.84482586e-01, 9.84114528e-01, ..., 
      9.82491255e-01, 9.83228445e-01, 9.83820796e-01], 
     [ 9.84869719e-01, 9.86230493e-01, 9.87663150e-01, ..., 
      9.81099427e-01, 9.82316971e-01, 9.83569324e-01], 
     [ 9.83583868e-01, 9.83583868e-01, 9.83583868e-01, ..., 
      9.83583868e-01, 9.83583868e-01, 9.83583868e-01]], 
<snip> 
     [ 8.91117509e-07, 8.92956564e-07, 8.92726121e-07, ..., 
      8.90103763e-07, 8.89725982e-07, 8.90051581e-07], 
     [ 9.32031071e-07, 9.32695400e-07, 9.33462957e-07, ..., 
      9.30619990e-07, 9.30997828e-07, 9.31466616e-07], 
     [ 9.39349945e-07, 9.39349945e-07, 9.39349945e-07, ..., 
      9.39349945e-07, 9.39349945e-07, 9.39349945e-07]]]]) 
Coordinates: 
    * lon  (lon) float64 -180.0 -176.2 -172.5 -168.8 -165.0 -161.2 -157.5 ... 
    * lat  (lat) float64 -90.0 -86.25 -82.5 -78.75 -75.0 -71.25 -67.5 ... 
    * lev  (lev) float64 1e+03 975.0 950.0 925.0 900.0 875.0 850.0 825.0 ... 
    * time  (time) datetime64[ns] 2000-04-15 
Attributes: 
    long_name: relative_humidity_after_moist 
    units: 1 
    fmissing_value: 1e+15 
    standard_name: relative_humidity_after_moist 
    vmin: -1e+15 
    vmax: 1e+15 
    valid_range: [ -9.99999987e+14 9.99999987e+14] 

위대한! 자, T는 어때? 온도 :

In [12]: data.T 
Out[12]: 
<xarray.Dataset> 
Dimensions: (lat: 49, lev: 48, lon: 96, time: 1) 
Coordinates: 
    * lon  (lon) float64 -180.0 -176.2 -172.5 -168.8 -165.0 -161.2 -157.5 ... 
    * lat  (lat) float64 -90.0 -86.25 -82.5 -78.75 -75.0 -71.25 -67.5 ... 
    * lev  (lev) float64 1e+03 975.0 950.0 925.0 900.0 875.0 850.0 825.0 ... 
    * time  (time) datetime64[ns] 2000-04-15 
Data variables: 
    H  (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 
    O3  (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 
    OMEGA (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 
    PHIS  (lon, lat, time) float64 2.605e+04 1.887e+04 3.46e+03 207.6 0.0 ... 
    PS  (lon, lat, time) float64 6.984e+04 7.764e+04 9.496e+04 ... 
    QI  (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 
    QL  (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 
    QV  (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 
    RH  (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 
    SLP  (lon, lat, time) float64 9.973e+04 9.937e+04 9.905e+04 ... 
    T  (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 
    U  (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 
    V  (lon, lat, lev, time) float64 nan nan nan nan nan nan nan nan ... 

오, 이런. I 은 트랜스 포즈라고 생각합니다. xarray 데이터 세트에서 "T"라는 변수를 정확히 어떻게 참조 할 수 있습니까?

답변

0

나는 내가 그것을 알아 냈다고 생각한다

data.get("T") 

독점적으로 지금을 사용할 수 있습니다.

3

Xarray는 대화 형 사용의 편의 기능으로 변수에 대한 속성 스타일 액세스를 지원합니다. 그러나 이미 알고 있듯이이 메서드는 내장 된 Dataset 메서드 (이 경우 Dataset.TDataset.transpose()과 같음)와 같은 이름의 변수에 액세스하는 데는 작동하지 않습니다.

변수에 액세스하는 신뢰할 수있는 방법은 사전 스타일 액세스 인 data['T']을 사용하는 것입니다.

data.get('T')도 작동합니다. Dataset은 Python의 매핑 인터페이스를 지원하기 때문입니다. dict.get처럼 키를 찾지 못하면 기본값을 사용하여 변수에 액세스합니다. data.get('not found')None을 반환합니다.