LoginSignup
0
2

More than 1 year has passed since last update.

metpy.unitsをxarray.DataArrayに適用するワンライナー

Last updated at Posted at 2022-10-10

はじめに

MetPyは,xarray(多次元データ解析ライブラリ)とpint(単位の概念を付与するライブラリ)を組み合わせた,気象系計算ツールの豊富な大変ありがたいPythonライブラリである.
xarrayに基づいているので,netcdfとの相性はとても良く,使いやすい.

事前処理として,次元のある変数には単位(metpy.units.units)を定義する仕様となっているが,単一変数であってもxarray.Datasetには単位を定義できない,という落とし穴?がある.(複数変数を保持しうるので,考えれば当たり前のこと,,)

import xarray as xr
from metpy.units import units

f = 'file_name.nc'
v = 'variable'
u = 'unit'

# xarray.open_dataset()を使う場合
v = xr.open_dataset(f)[v] * units(u)

# xarray.open_dataarray()を使う場合
v = xr.open_dataarray(f) * units(u)

例えば,'vaiable''temperature''unit''kelvin'などを入れる.

xarray.open_dataset()を使う場合

そのままだとxarray.Datasetを返すので,['variable']を右につけることで,xarray.DataArrayを取り出す.
さらに右にunits('unit')もしくはunits.unitを掛けることでmetpy.unitsを適用する.

xarray.open_dataarray()を使う場合

もし単一変数のnetcdfを読み込んだ場合に限り,open_dataarray()を使える.もちろんxarray.DataArrayが返ってくるので,そのままmetpy.unitsを適用できる.

xr.DataArray.metpy.quantifyを使う場合

自分は使ったことがないが,チュートリアルにはnetcdfのattrsからうまいこと単位を読み込める,ようなことが書いてある.
(骨の髄からunit-awareの精神でデータ整備すれば幸せになれる..?)

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2