【发布时间】:2013-09-10 23:38:26
【问题描述】:
这是我第一次使用 netCDF,我正在努力使用它。
我有多个版本 3 netcdf 文件(NOAA NARR air.2m 全年平均每天)。每个文件跨越 1979 年至 2012 年之间的一年。它们是 349 x 277 网格,分辨率约为 32 公里。数据是从here下载的。
维度是时间(自 1800 年 1 月 1 日以来的小时数),我感兴趣的变量是空气。我需要计算温度
Day 1 = +4 degrees, accumulated days = 0
Day 2 = -1 degrees, accumulated days = 1
Day 3 = -2 degrees, accumulated days = 2
Day 4 = -4 degrees, accumulated days = 3
Day 5 = +2 degrees, accumulated days = 0
Day 6 = -3 degrees, accumulated days = 1
我需要将此数据存储在一个新的 netcdf 文件中。我对 Python 很熟悉,对 R 也很熟悉。每天循环的最佳方式是什么,检查前几天的值,并在此基础上将值输出到具有完全相同维度和变量的新 netcdf 文件... . 或者也许只是将另一个变量添加到原始 netcdf 文件中,其中包含我正在寻找的输出。
最好将所有文件分开还是合并?我将它们与 ncrcat 结合使用,效果很好,但文件为 2.3gb。
感谢您的意见。
我目前在python方面的进展:
import numpy
import netCDF4
#Change my working DIR
f = netCDF4.Dataset('air7912.nc', 'r')
for a in f.variables:
print(a)
#output =
lat
long
x
y
Lambert_Conformal
time
time_bnds
air
f.variables['air'][1, 1, 1]
#Output
298.37473
为了帮助我更好地理解这一点,我正在使用哪种类型的数据结构? ['air'] 是上面示例中的键,而 [1,1,1] 也是键吗?得到 298.37473 的值。然后如何循环遍历 [1,1,1]?
【问题讨论】:
-
我知道这对于 2013 年的这个线程来说已经相当晚了,但我只是想指出,接受的解决方案并没有为所提出的问题提供解决方案。这个问题似乎想要温度低于零的每个连续周期的长度(请注意,如果温度超过零,计数器会重置),而这个解决方案只给出一年中温度低于零的总天数。这不是细微的差别。如果只需要总天数,则应编辑问题以说明这一点。