用Scipy创建netcdf文件?

时间:2015-10-24 06:24:19

标签: python scipy typeerror netcdf

我今天的工作是在Numpy中使用数组并使用Scipy将其转储到网络CDF文件(.nc)中。 Scipy为此http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.io.netcdf.netcdf_file.html提供了一个特定的子模块,但是没有很多示例可用于创建实际的netcdf文件。

以下是需要进入文件的数据:

  • 纬度(94)
  • 经度(192)
  • 对应于上面形成的矩阵的温度数据

我已经将所有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()”方法中的数据类型的任何其他示例......?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

documentation for createVariable表示第三个参数:

  

变量使用的维名称列表,按所需顺序。

因此,您需要提供维度名称列表,而不是像192或94这样的整数。例如,

longi = f.createVariable('lons',  'i', ['lons'])

似乎是正确的。