我今天的工作是在Numpy中使用数组并使用Scipy将其转储到网络CDF文件(.nc)中。 Scipy为此http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.io.netcdf.netcdf_file.html提供了一个特定的子模块,但是没有很多示例可用于创建实际的netcdf文件。
以下是需要进入文件的数据:
我已经将所有3个保存在Numpy中了,我现在只需要使用Scipy(我也有.NETCDF4 python包,但我无法用它来解决这个问题)将数据放入.nc文件中
到目前为止,这是我的代码:
#testing code about difference
f = netcdf.netcdf_file('2m air temperature difference.nc', 'w')
f.history = 'describes the difference in 2m air temperature between the period (1992-2011) to (1961-1981)'
f.createDimension('lons', 192)
f.createDimension('lats', 94)
print 'lons.size', lons.size
print 'lats.size', lats.size
longi = f.createVariable('lons', 'i', 192)
lati = f.createVariable('lats', 'i', 94)
f.createDimension('diff', difference.size)
lons = lons[:]
lats = lats[:]
differ = difference[:]
f.close()
我使用了scipy文档中提供的默认示例,并且我只替换了为我的数据创建它所必需的部分,其他所有内容都与示例中显示的相同。
唯一的问题是,由于某种原因,我收到的错误是"Type Error: 'int' object is not iterable"
。但是,给出的示例使用i
作为数据类型,并且它没有提供可用作“createVariable()”方法中的数据类型的任何其他示例......?
感谢任何帮助。
答案 0 :(得分:0)
documentation for createVariable表示第三个参数:
变量使用的维名称列表,按所需顺序。
因此,您需要提供维度名称列表,而不是像192或94这样的整数。例如,
longi = f.createVariable('lons', 'i', ['lons'])
似乎是正确的。