2016-10-26 1 views
1

Tous,Comment lire une variable appelée "T" avec xarray?

Ceci est une FAQ, mais mon Google-fu m'a échoué. A savoir, je l'ai lu dans un fichier généré par un modèle de temps je travaille avec un xarray la:

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 ... 

Jusqu'à présent, si bon. (Remarque: j'ai supprimé les attributs pour l'espace). Maintenant, nous allons nous référer à RH, l'humidité relative:

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] 

Super! Maintenant, qu'en est-T, la température:

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 ... 

cher Oh. Je pense ce qu'il fait est une transposition. Comment exactement peut-on se référer à une variable appelée "T" dans un jeu de données xarray?

Répondre

0

Je pense que j'ai tout compris:

data.get("T") 

peut utiliser que maintenant exclusivement.

3

Xarray prend en charge l'accès de style d'attributs pour les variables comme une fonction pratique pour une utilisation interactive. Mais comme vous l'avez remarqué, cela ne fonctionne pas pour accéder à une variable avec le même nom qu'une méthode Dataset intégrée (dans ce cas Dataset.T, qui est identique à Dataset.transpose()).

La façon fiable pour accéder à des variables est d'utiliser un accès de type dictionnaire, data['T'].

data.get('T') fonctionne également, parce que Dataset prend en charge l'interface de cartographie de Python. Comme dict.get, il est destiné à l'accès aux variables avec une valeur par défaut si la clé n'est pas trouvée: data.get('not found') renverra None.