2017-04-18 15 views
0

私はnetCDFファイルを持っていて、python netCDF4を使って新しい変数を作成しようとしていました。しかし、プログラムは配列に値を代入できませんでした。NetCDF4変数に値を割り当てよう

以下は私のコードである

import netCDF4 
file = netCDF4.Dataset(filename, "r+") 
tmp = file.createVariable("tmp", "f4", ('time','height','lat','lon'), zlib=True) 
tmp.set_auto_mask(False) 
tmp.set_auto_maskandscale(False) 

//setting values 
tmp[0][0][0][0] = 0.1234 
print(tmp[0][0][0][0]) 
//I got 9.96921e+36, which seems to be the default fill value 

私はこの問題を解決するにはどうすればよいですか?

ご協力いただければ幸いです。 netCDFファイル内にある変数へのアクセス

TIA

答えて

0

は次のように行われます。

<type "netCDF4._netCDF4.Variable"> 
float32 temp(time, level, lat, lon) 
    least_significant_digit: 3 
    units: K 
unlimited dimensions: time, level 
current shape = (0, 0, 73, 144) 
:あなたは tmp変数を見て、それを印刷する場合は、このようなものが表示されます

file.variables["tmp"][0,0,0,0] = 0.1234 
//read complete var 
putDataInHere = file.variables["tmp"][:] 

+0

その場所に新しい値を代入したいのであれば、 'file.variable ["tmp"]の代わりに[file.variable ["tmp"] [0,0,0,0] = 0.1234' 0] [0] [0] = 0.1234 'そうですか? 私はちょうど今試してみたように思えます。 @ lpoorthuis –

+0

正確に。 [numpy indexing](https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)をご覧ください。 python netcdf4はnumpy配列を使用しているので、インデックスはちょっと違って、ネイティブのpythonリスト – lpoorthuis

+0

が表示されます。今はスムーズに動作します。助けてくれてありがとう。 @ lpoorthuis –

関連する問題