2017-04-18 158 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 

我应该怎么做才能解决这个问题?

任何帮助,将不胜感激。

TIA

回答

0

访问是在NetCDF文件变量就像下面这样:

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

如果你看一下tmp变量和打印,你会看到这样的事情:

<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) 
+0

因此,如果我想为该位置分配一个新值,我会'file.variable [“tmp”] [0,0,0,0] = 0.1234'而不是'file.variable [“tmp”] [ 0] [0] [0] [0] = 0.1234'对不对? 我刚刚尝试,似乎它的工作原理。准确地说@lpoorthuis –

+0

。看看[numpy索引](https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)。蟒蛇netcdf4使用numpy数组,所以索引是有点不同,然后本机Python列表 – lpoorthuis

+0

我看到。它现在工作顺利。谢谢您的帮助。 @lpoorthuis –