0
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 个列表项中的数据。我的目标是将所选变量(Geopotential Height)的前 24 个文件作为一个 numpy 数组,但为了做到这一点,我需要能够使用 .values 提取每个文件中包含的信息。

我一直在关注 pygrib 的文档:https ://jswhit.github.io/pygrib/docs/

4

1 回答 1

1

根据您提供的文档链接:

select返回gribmessage实例列表。

所以,当你这样做时:

grb1=grbs.select(name='Geopotential Height')[0:24]

您正在获取select(这是一个列表)的结果,然后对该列表进行切片(产生另一个列表)。然后将切片列表绑定到grb1. 因此,grb1 是一个gribmessage实例列表。

正如 Pyhton 异常所述,列表没有values属性。然而,一个单一的gribmessage,大概,。

不确定这是否能让您更接近预期的结果,但您可以使用列表推导从列表中的实例中获取values :gribmessage

values = [grb.values for grb in grb1]
于 2019-10-16T17:43:43.880 回答