IPCC の netCDF データセットから空間的および時間的サブセットを抽出するスクリプトを作成しました。次のスクリプトは問題なく動作します。
import numpy
import netCDF4
import datetime
drs_name = ['C:\\pr_Amon_MPI-ESM-MR_rcp45_r2i1p1_200601-210012.nc']
cdf_dataset = netCDF4.Dataset(drs_name[0])
cdf_time = cdf_dataset.variables['time']
date_start = 2006
time_start = datetime.datetime(date_start,1,1,0,0,0)
sbset_time_loindex = netCDF4.date2index(time_start,cdf_time,
calendar = cdf_calendar,
select='nearest')
cdf_dataset の変数 'time' には属性があり、上記のように "cdf_time" と記述すると、それらがそれに運ばれます。「cdf_time」の簡単な出力を次に示します。
cdf_time is : <class 'netCDF4._netCDF4.Variable'>
float64 time(time)
bounds: time_bnds
units: days since 1850-1-1 00:00:00
calendar: proleptic_gregorian
axis: T
long_name: time
standard_name: time
unlimited dimensions: time
current shape = (1140,)
filling off
この特定のケースでは、「netCDF4.date2index」で必要とされるのは属性「units」です。
私が書くとき
cdf_time = cdf_dataset.variables['time'][:]
属性は引き継がれません。この「cdf_time」バージョンの印刷出力は次のとおりです。
cdf_time is: [ 56993.5 57023. 57052.5 ..., 91599.5 91630. 91660.5]
これは基本的に時間値ですが、属性はありません。このスライスの効果について誰か説明してください "[:]? なぜ属性が引き継がれないのですか?
ところで、私はこれについてかなり新しいので、きちんとしたコードを期待していませんが、宿題をしようとしています. 前もって感謝します。