我已经创建了一个x,y netcdf文件,现在想添加额外的时间能量变量。所以每个网格单元格都有一个能量时间值。
我的Python脚本是这样的:
Value = loadtxt(" nations .txt",skiprows=0) % countries data = loadtxt("energy.txt",skiprows=0) % energy
的energy.txt
文件是这样的:
[国家id]…51 52 54 55 56 59 60 62……[时间步骤1]…南649南1083 9979南13602…[时间步骤2]…5743 1283 9062 4026 nan 6365 43444 nan…(时间步n ] ... ... ... ... ... ... ... ... ... ...
等等(直到87648步),其中感兴趣的单元格是第一行:
cellsOfInt =数据(0:)
- 对于一些单元格,我有nan值,因为这些时间步长没有值。
- 每一行对应一个时间步骤,所以对于51单元格,在第一个时间步骤中我们有nan值,在第二个时间步骤中我们有5743,直到87648。
- 所有感兴趣的单元格都在nations .txt文件中,该文件是950 X 1000,当没有值时,感兴趣的单元格id或nan。
我的代码:
Y = nc。createDimension("y", 950) #y x = nc。createDimension("x", 1000) #x time = nc。createDimension("time", 87648) #time纬度=nc。creatvariable ("y", "f8", ("y",))经度=nc。createVariable(“x”、“f8”(“x”))时间= nc.createVariable(“时间”、“f8”(“时间”))国家=数控。creatvariable("国家","f8", ("y", "x"));能量= nc。creatvariable ("energy", "f8", ("time", "y", "x"), fill_value=-9999, chunksizes=(1,950, 1000));时间。standard_name = '时间'时间。单位='hours since 2006-01-01 00:00:00.0'时间。calendar='proleptic_gregorian' lats = np.arange(5497500,747500,-5000) #y lons = np.arange(2502500,7502500,5000) #x # Fill variables latitude[:] = lats longitude[:] = lons countries [:]=value
直到这里工作正常,我有我的2d国家,但它没有给出任何能量的结果:
如果I在xrange(0,950): #rows For j在xrange(0,1000): #columns For n在xrange(0,87648): #rows For m在xrange(0,1): #columns if data[1,m] == nations [I,j]: #correspondance nc.variables["energy"][n]=data[n,m]
有什么想法如何解决这个问题,这样我就可以在country.netcdf文件时间维度与能量值在每个时间步骤?非常感谢!
如果data[0,m] == nations [i,j]:
因为你对第一行感兴趣;(b)米
从0
来1
(对于m在xrange(0,1)中的值:
),但它应该从0
来number_of_countries
所有的列能源
是迭代。(c)顺序n
而且米
For循环似乎非常无效。更好的做法是:对我来说……: if data[1,m] ==…: for n in…: nc.variables…=…
.或替换后面的循环为nc.variables[“能量”][:]=数据(:,m)
\ endgroup美元