2

xarray オブジェクトを netcdf ファイルに書き込もうとすると、次のエラーが発生しました。

"ValueError: chunksize cannot exceed dimension size"  

データがメモリに対して大きすぎるため、チャンクする必要があります。
ルーチンは基本的に次のとおりです。

import xarray as xr  
ds=xr.open_dataset("somefile.nc",chunks={'lat':72,'lon':144}  
myds=ds.copy()
#ds is 335 (time) on 720 on 1440 and has variable var  
def some_function(x):
  return x*2
myds['newvar']=xr.DataArray(np.apply_along_axis(some_function,0,ds['var']))  
myds.drop('var')  
myds.to_netcdf("somenewfile.nc")

基本的には内容をいじって書き直すだけです。それにもかかわらず、チャンクは悪いようです。1 つの配列に再チャンクする場合と同じです。私もdsを書き換えることができません。エラーを追跡する方法、またはこれを解決する方法はありますか?

netCDF4 のバージョンは 1.2.4
、xarray (以前の xray) のバージョンは 0.8.2
、dask のバージョンは 0.10.1 です。

4

1 に答える 1

3

書き込みコマンドのエンジンの問題でした。チャンクを使用している場合は、エンジンを netcdf4 (デフォルト) から scipy に変更する必要があります!

myds.to_netcdf("somenewfile.nc",engine='scipy')

netcdf4 パッケージは、そのようなファイルを書き込むことができません。

于 2016-10-10T14:29:14.837 に答える