Xarray转台:TypeError:不可用的类型:' list'

发布于 2025-01-23 05:00:09 字数 1919 浏览 4 评论 0 原文

我正在尝试重新排列以下数据集的尺寸,

X 
xarray.Dataset

    Dimensions:
        lon: 720lat: 360sector: 8time: 240
    Coordinates:
        lon
        (lon)
        float64
        -179.8 -179.2 ... 179.2 179.8
        lat
        (lat)
        float64
        -89.75 -89.25 ... 89.25 89.75
        sector
        (sector)
        int32
        0 1 2 3 4 5 6 7
        time
        (time)
        object
        2000-01-16 00:00:00 ... 2019-12-...
    Data variables:
        CO_em_anthro
        (time, sector, lat, lon)
        float32
        0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
    Attributes: (33)

X.transpose(['lat','lon','sector','time'])

在0.20.1版本中,我收到以下错误

File /nbhome/f1p/miniconda3/envs/f1p_gfdl/lib/python3.9/site-packages/xarray/core/utils.py:879, in drop_missing_dims(supplied_dims, dims, missing_dims)
    868 """Depending on the setting of missing_dims, drop any dimensions from supplied_dims that
    869 are not present in dims.
    870 
   (...)
    875 missing_dims : {"raise", "warn", "ignore"}
    876 """
    878 if missing_dims == "raise":
--> 879     supplied_dims_set = {val for val in supplied_dims if val is not ...}
    880     invalid = supplied_dims_set - set(dims)
    881     if invalid:

File /nbhome/f1p/miniconda3/envs/f1p_gfdl/lib/python3.9/site-packages/xarray/core/utils.py:879, in <setcomp>(.0)
    868 """Depending on the setting of missing_dims, drop any dimensions from supplied_dims that
    869 are not present in dims.
    870 
   (...)
    875 missing_dims : {"raise", "warn", "ignore"}
    876 """
    878 if missing_dims == "raise":
--> 879     supplied_dims_set = {val for val in supplied_dims if val is not ...}
    880     invalid = supplied_dims_set - set(dims)
    881     if invalid:

TypeError: unhashable type: 'list'

调用transpose确实可以在没有尺寸名称的情况下工作。 我不确定如何解决此问题。谢谢

I am trying to rearrange the dimensions of the following dataset

X 
xarray.Dataset

    Dimensions:
        lon: 720lat: 360sector: 8time: 240
    Coordinates:
        lon
        (lon)
        float64
        -179.8 -179.2 ... 179.2 179.8
        lat
        (lat)
        float64
        -89.75 -89.25 ... 89.25 89.75
        sector
        (sector)
        int32
        0 1 2 3 4 5 6 7
        time
        (time)
        object
        2000-01-16 00:00:00 ... 2019-12-...
    Data variables:
        CO_em_anthro
        (time, sector, lat, lon)
        float32
        0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0
    Attributes: (33)

This used to work

X.transpose(['lat','lon','sector','time'])

but in version 0.20.1, I am getting the following error

File /nbhome/f1p/miniconda3/envs/f1p_gfdl/lib/python3.9/site-packages/xarray/core/utils.py:879, in drop_missing_dims(supplied_dims, dims, missing_dims)
    868 """Depending on the setting of missing_dims, drop any dimensions from supplied_dims that
    869 are not present in dims.
    870 
   (...)
    875 missing_dims : {"raise", "warn", "ignore"}
    876 """
    878 if missing_dims == "raise":
--> 879     supplied_dims_set = {val for val in supplied_dims if val is not ...}
    880     invalid = supplied_dims_set - set(dims)
    881     if invalid:

File /nbhome/f1p/miniconda3/envs/f1p_gfdl/lib/python3.9/site-packages/xarray/core/utils.py:879, in <setcomp>(.0)
    868 """Depending on the setting of missing_dims, drop any dimensions from supplied_dims that
    869 are not present in dims.
    870 
   (...)
    875 missing_dims : {"raise", "warn", "ignore"}
    876 """
    878 if missing_dims == "raise":
--> 879     supplied_dims_set = {val for val in supplied_dims if val is not ...}
    880     invalid = supplied_dims_set - set(dims)
    881     if invalid:

TypeError: unhashable type: 'list'

calling transpose does work without the dimension name.
I am not sure how to fix this issue. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

日暮斜阳 2025-01-30 05:00:09

Xarray的转置接受目标维度为多个参数,而不是尺寸列表。

请参阅

您需要将代码更改为:

X.transpose('lat','lon','sector','time')

Xarray’s transpose accepts the target dimensions as multiple arguments, not a list of dimensions.

See the *args in the transpose docs.

You need to change your code to:

X.transpose('lat','lon','sector','time')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文