gribfile='gfs20191010.0p25' #file containing 384 hours of forecast data for variable Geopotential Height
grbs=pygrib.open(gribfile)
grb1=grbs.select(name='Geopotential Height')[0:24]
day1 = grb1.values
当我运行上面的代码时,出现以下错误:
AttributeError: 'list' object has no attribute 'values'
当仅选择列表中的第一项时,.values 键将起作用,如下所示:
grb1 = grbs.select(name='Geopotential Height')[0]
但不是当我这样做的时候
grb1 = grbs.select(name='Geopotential Height')[0:24]
我知道对于 .values 键,格式是 dict.values,但我无法弄清楚如何检索前 24 个列表项中的数据。 我的目标是将所选变量(位势高度(的前 24 个文件作为 numpy 数组,但为了做到这一点,我需要能够使用 .values 提取每个文件中包含的信息。
我一直在关注以下位置找到的pygrib文档:https://jswhit.github.io/pygrib/docs/
根据您提供的文档链接:
select
返回gribmessage
实例的列表。
因此,当您执行此操作时:
grb1=grbs.select(name='Geopotential Height')[0:24]
您正在获取select
的结果(这是一个列表(,然后对该列表进行切片(这将产生另一个列表(。然后将切片列表绑定到grb1
。因此,grb1 是gribmessage
实例的列表。
正如 Pyhton 异常所述,列表没有values
属性。然而,一个单一的gribmessage
,大概,可以。
不确定这是否会让您更接近预期的结果,但您可以使用列表推导式从列表中的gribmessage
实例中获取value
:
values = [grb.values for grb in grb1]