問題タブ [python-xarray]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - NetCDF ファイルを使用した xray データセットの転置
Xray ライブラリ (Python の ND ラベル付き配列とデータセット) を試しています。転置を使用してインデックスの順序を変更していますが、結果は変わりません。
次のコード セグメントは、NetCDF ファイルにアクセスして xray データセットに割り当て、データのサブセットを抽出し、Pandas DataFrame を作成して、結果を CSV ファイルに出力します。
次に、xray Dataset の次元が転置され、同じプロセスでサブセットが抽出され、DataFrame が作成され、CSV が出力されます。結果は同じです。
python - Python : netCDF4 を使用して netcdf ファイルの値を置き換える
複数の値 < 0 を持つ netcdf ファイルがあります。それらすべてを 1 つの値 (たとえば -1) に置き換えたいと考えています。netCDF4 を使用してそれを行うにはどうすればよいですか? 私はこのようにファイルを読んでいます:
python - PythonでnetCDF4を使用して大きなnetcdfファイル(> 10Gb)を作成する
8 GB の RAM を搭載したマシンで Python で非常に大きな netCDF ファイルを作成しようとすると問題が発生します。
numpy.memmap を使用して非常に大きな配列を作成し、この配列を RAM ではなくディスクに配置しました。これは、そのサイズが使用可能な RAM およびスワップ スペースを超えているためです。(RAM とスワップ = それぞれ 8 GB)
ncファイルに変数を作成しました
コードがこの時点に到達すると、ディスクに保存されている ARRAY が RAM にロードされ、メモリ エラーが発生します。
このような大きなファイルを保存するにはどうすればよいですか?
ありがとう。
python - Python xarray:時系列の各月内の最初と最後の時間値を抽出する
EDIT 2016-01-24: この動作は、xarray (当時は「xray」と呼ばれていました) のバグによるものでした。以下のskcによる回答を参照してください。
xarray.DataArray
複数年にわたる毎日のデータを構成しています。時系列の各月のそのデータの時間傾向を計算したいと思います。を使用して、分子、つまり各月の数量の変化を取得できますresample
。と仮定すると、次の名前の時間座標を持つarr
私のオブジェクトです。xarray.DataArray
'time'
次にdata_last - data_first
、その月のその変数の変化を教えてくれます。
time=arr.time
ただし、これはオブジェクト自体では機能しません。'first'
と'last'
kwarg の両方の値は、その月の最終日である同じ値を生成します。また、時系列の個々の月内の最初と最後の時間値が必要な場合に、すべての 1 月をまとめたり、すべての 2 月をまとめたりするなどして、groupby
メソッドを使用できないためです。time.month
xarrayでこれを行う簡単な方法はありますか? はいと思いますが、私はパッケージに不慣れで、惨めに失敗しています。
python - 次元を展開 xarray
オブジェクトの次元 (および座標) を拡張する既存の方法またはアプローチはありxarray.DataArray
ますか?
np.expand_dimsに似たものを取得したいと同時に、新しい Expanded の新しい次元と座標変数を定義しDataArray
ます。
I を使用DataArray.assign_coords()
すると、新しい座標変数を作成できますが、配列自体は新しい軸で展開されません。
python - _FillValue と missing_value の競合を避けるために、xarray でデータセットをインポートおよびデコードする
xarray open_dataset または open_mfdataset を使用して NARR netcdf データセット (例: ftp://ftp.cdc.noaa.gov/Datasets/NARR/monolevel/air.2m.2010.nc ) をロードすると、xarray は「競合する _FillValue とmissing_values".
入力:
ds = xarray.open_dataset('air.2m.2010.nc')
このエラーが発生します:
ValueError: ('Discovered conflicting _FillValue and missing_value. Considering opening the offending dataset using decode_cf=False, corrected the attributes', 'and decoding explicitly using xray.conventions.decode_cf(ds)')
提案を使用してそのように開く場合:
ds = xarray.open_dataset('air.2m.2010.nc',decode_cf=False)
、
データセットは開かれますが、変数、時間、座標などは (明らかに) デコードされません。明示的に使用xarray.decode_cf(ds)
しても、同じエラーが発生するため、データセットを正常にデコードするのに役立たないようです。
このエラーは、NARR データセットが Lambert Conformal であるため、xarray によって開かれたグリッドの形状が原因で値が欠落しているために発生すると考えられます。何らかの理由で、これは塗りつぶし値と競合します。
このファイルを xarray で開いてデコードする最良の方法は何ですか?
NB netcdf4-python を使用して開いてデコードすることができましたが、これを xarray で実行して、dask によって提供されるコア計算機能を利用できるようにしたいと考えています。
python - Python での非常に大きな netcdf ファイルの読み込みの高速化
PythonでnetCDF4を使用して読んでいる非常に大きなnetCDFファイルがあります
このファイルのサイズ (1200 x 720 x 1440) は、ファイル全体を一度にメモリに入れるには大きすぎるため、一度にすべてを読み取ることはできません。最初の次元は時間を表し、次の 2 次元はそれぞれ緯度と経度を表します。
しかし、一度に 1 年ずつ読むのは非常に遅いです。以下のユースケースでこれを高速化するにはどうすればよいですか?
- 編集
チャンクサイズは 1
年の範囲を読み取ることができます: nc_file.variables[変数名][0:100, :, :]
いくつかのユースケースがあります:
年の年:
/li>
python - xarray 変数を 2D numpy 配列で乗算する際の値エラー
次のエラーが表示されます。
2 つの配列の形状は次のとおりです。
このエラーを修正するにはどうすればよいですか?
python - xarray でデータセット座標を置き換える (Python)
、およびのIntensity
3 つの次元の値で構成される NetCDF4 形式で保存されたデータセットがあります。座標に次元と同じ名前を付けました(良いか悪いかわかりません...)Loop
Delay
Wavelength
Python でxarray (以前の xray)を使用してデータセットをロードしています。
ここで、元のデータを追跡しながらデータを操作したいと考えています。たとえば、次のようにします。
Delay
座標にオフセットを適用し、元のデータ配列を変更しないでDelay
ください。これは次のように行われるようです:ds_ = ds.assign_coords(Delay_corr=ds_.Delay.copy(deep=True) + 25)
データセット内の関連するすべてのデータ配列の座標
Delay
を置き換えます。Delay_corr
ただし、これを行う方法がわかりません。ドキュメントには何も見つかりませんでした。
アイテム#2の実行方法を知っている人はいますか?
テスト データを含む NetCDF4 ファイルをダウンロードするには: http://1drv.ms/1QHQTRy
python - 競合する座標を持つ xArray データセットをマージする方法
2 つのデータセットがあり、それぞれに対象となる異なる変数が含まれており、インデックスが不完全 (ただし競合していない) であるとします。
これにより、適切にマージされるように見える 2 つのデータ セットが作成されます。
しかし、そうではありません-試行ages.merge(heights)
すると次のことが発生しValueError
ます:
座標を削除kid_names
すると問題が解決します。
座標が のように処理されているように見えますが、DataArrays
値が異なるとエラーが発生します。しかし、2 つのインデックスのスーパーセットに拡張するなど、ベース座標のように扱うべきではありませんか? それとも、私がしなければならない別の操作がありますか?
私はxarray 0.7.2とnumpy 1.10.4を使用してpython 3.5を使用しています