我使用open_dataset打开由MITgcm生成的netcdf输出。但是,DataSet中的其中一个坐标变量会作为整个DataSet而不是DataArray返回。Xarray - DataArray作为数据集打开
的过程似乎正常工作:
import xarray as xr
ds = xr.open_dataset('state.0000000000.nc')
<xarray.Dataset>
Dimensions: (T: 8, X: 16, Xp1: 17, Y: 16, Yp1: 17, Zld000100: 100, Zmd000100: 100)
Coordinates:
* T (T) float64 1.296e+05 3.888e+05 6.48e+05
* X (X) float64 500.0 1.5e+03 2.5e+03
* Y (Y) float64 4.85e+04 4.95e+04
* Xp1 (Xp1) float64 0.0 1e+03 2e+03
* Yp1 (Yp1) float64 4.8e+04 4.9e+04
* Zmd000100 (Zmd000100) int64 0 1 2
* Zld000100 (Zld000100) int64 0 1 2
Data variables:
iter (T) int32 1296 3888
diag_levels (Zmd000100) float64 1.0
(其中我省略了一些输出的详细信息)。 然而,当我检查的T类型的坐标,它回来作为DataSet
type(ds.T)
# xarray.core.dataset.Dataset
当我检查的任何其他坐标/变量的类型,他们回来为
xarray.core.dataarray.DataArray
ds.T坐标看起来与ds相同。例如,如果我向ds添加一个变量,它也会添加到ds.T.它也似乎是无限递归的,例如ds.T.T.T是同一个对象。
在底层netcdf文件中,T维与其他维之间的唯一区别是T具有无限维。
T = UNLIMITED ; // (4 currently)
不过,我已经创建了一个具有无限尺寸的虚拟netCDF文件和问题没有再出现。
我试过用decode_times,decode_cf和decide_coords = False没有区别。
我使用xarray版本0.8.2,运行python 2.7.12。
谢谢斯蒂芬,我会尽力在此传播这个词 – braaannigan