私は3次元の大きなnetcdfファイルを持っています。私は変数LU_INDEX
をnetcdfファイルに置き換え、すべての値10を2に置き換えたい。変数のnetcdfファイルの値を変更する
これを行うにはこのpythonスクリプトを書きましたが、うまくいかないようです。
filelocation = 'D:/dataset.nc'
ncdataset = nc.Dataset(filelocation,'r')
lat = ncdataset.variables['XLAT_M'][0,:,:]
lon = ncdataset.variables['XLONG_M'][0,:,:]
lu_index = ncdataset.variables['LU_INDEX'][0,:,:]
lu_index_new = lu_index
ncdataset.close()
nlat,nlon=lat.shape
for ilat in range(nlat):
for ilon in range(lon):
if lu_index == 10:
lu_index_new[ilat,ilon] = 2
newfilename = 'D:/dataset.new.nc'
copyfile(ncdataset,newfilename)
newfile = nc.Dataset(newfilename,'r+')
newfile.variables['LU_INDEX'][0,:,:] = lu_index_new
newfile.close()
私はエラーを取得する:
The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
は、私は、Pythonで非常に経験はないですので、これを行うために、より簡単な方法がある場合はコメントすることは非常に歓迎されています。
NCOとPythonのソリューションの間には、かなりの違いがあります。 –
NCOはおそらく1000倍高速です。プロのヒント:可能な限り常にNCOを活用してください。 –