簡體   English   中英

python xarray.sel 對於字符串的 xr.dataArray 不穩定

[英]python xarray.sel unstable for xr.dataArray of strings

我有一個名為 IDB 的 xr.Dataset,它有一個名為“affiliations”的 DataArray,由字符串組成:

IDB.affiliations
<xarray.DataArray 'affiliations' (stations: 92)>
array(['Instituto_Argentino_de_Oceanografia',
       'Instituto_Argentino_de_Oceanografia',
       'Instituto_Argentino_de_Oceanografia',
       'Instituto_Argentino_de_Oceanografia',
       ..............

在我 select 使用 Dataset.sel() 的子集之后,我得到:

IDB = IDB.sel({'stations':a_subset_of_stations})

IDB.affiliations
<xarray.DataArray 'affiliations' (stations: 24)>
array([array('Instituto_Argentino_de_Oceanografia', dtype=object),
       array('Instituto_Argentino_de_Oceanografia', dtype=object),
       array('Instituto_Argentino_de_Oceanografia', dtype=object),
       array('Instituto_Argentino_de_Oceanografia', dtype=object),
       ..................

因此,我得到的不是字符串數組,而是包含字符串的 arrays 數組。 這使我無法將其保存到 netcdf..

IDB.to_netcdf(pathOut,mode='w',engine='netcdf4')

ValueError:無法推斷變量“隸屬關系”的數據類型; xarray 無法序列化任意 Python 對象

探索這個錯誤,我發現如果我偶爾顯式訪問相應數據數組的值,它就會消失。

我所做的就是故意訪問數據集中所有數據數組的值,並且錯誤停止被重現:

## xarray BUG
for variable in list(IDB.variables.keys()):
    spare = IDB[variable].values

## Now, apply sel...
IDB = IDB.sel({'stations':a_subset_of_stations})
IDB.affiliations

<xarray.DataArray 'affiliations' (stations: 24)>
array(['Instituto_Argentino_de_Oceanografia',
       'Instituto_Argentino_de_Oceanografia',
       'Instituto_Argentino_de_Oceanografia',
       'Instituto_Argentino_de_Oceanografia',

希望這對某人有用...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM