我有一个 xarray 数据集,其中包含许多 dataArray。这些 dataArray 中的每一个都有一个 .attrs,其中包含一个有序的 dict,其中包含 ] 内容,例如每个 dataArray 的描述和单位。

我想遍历 dataSet 中的每个 dataArray 并将它们的每个 .attrs 打印出来。

for ii in dataSet.data_vars:
    print(ii)

会给我每个dataArray的名称。但是,当我尝试
for ii in dataSet.data_vars:
    print(ii.attrs)

我得到 AttributeError: 'str' object has no attribute 'attrs'
如果我改为尝试,
for ii in dataSet.data_vars:
     print(dataSet.ii.attrs)

我得到 AttributeError: 'Dataset' object has no attribute 'ii'

看起来 python 试图将 'ii' 作为 DataArray 名称而不是实际存储为 ii 下的字符串的 dataArray 名称读取。我怎样才能遍历所有的 dataArrays 并打印出每个的 [dataArray].attrs?

最佳答案

data_vars 是一个可以迭代键值对的字典。

for varname, da in dataSet.data_vars.items():
    print(da.attrs)

您是最后一个示例也可以使用,但您需要使用 ii 作为字典键:
for ii in dataSet.data_vars:
    print(dataSet[ii].attrs)

请注意,如果您使用的是最新版本的 xarray,您还可以使用 dataSet.info() method 打印所有变量/属性。

关于python - 循环遍历 xarray 数据集中的 dataArray 属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42805090/

10-12 22:00