什么是“无索引维度”以及为什么坐标*为空*?

时间:2017-01-26 15:03:40

标签: python python-xarray

我正在阅读NetCDF文件,我正在Unindexed dimensions。这是什么意思,我应该担心吗?它与坐标*empty*有关吗?这是否意味着源文件中的内容不整洁?

In [33]: ds
Out[33]: 
<xarray.Dataset>
Dimensions:                     (hirs-n17_nx: 7, hirs-n17_ny: 7, hirs-n18_nx: 7, hirs-n18_ny: 7, matchup_count: 11969)
Coordinates:
    *empty*
Unindexed dimensions:
    hirs-n17_nx, hirs-n17_ny, hirs-n18_nx, hirs-n18_ny, matchup_count
Data variables:
(...)
    hirs-n18_counts_ch12        (matchup_count, hirs-n18_ny, hirs-n18_nx) float64 -2.147e+09 ...
(...)

In [35]: ds["hirs-n17_radiance_ch12"]
Out[35]: 
<xarray.DataArray 'hirs-n17_radiance_ch12' (matchup_count: 11969, hirs-n17_ny: 7, hirs-n17_nx: 7)>
[586481 values with dtype=float64]
Unindexed dimensions:
    matchup_count, hirs-n17_ny, hirs-n17_nx
Attributes:
    units: mW m^-2 sr^-1 cm

1 个答案:

答案 0 :(得分:1)

“无索引尺寸”只是没有关联坐标变量的尺寸。更好的部分标题可能是“没有坐标的尺寸”。这没有什么本质上的错误:有时维度没有有意义的坐标值,而xarray处理这个就好了。

这是xarray对象的repr中的新部分。从x0.0.0开始,xarray数据模型中为coordinates for dimensions are now optional,而不是使用[0, 1, 2, ..., N-1]形式的默认值填充。

旧行为/ repr(xarray v0.8.2):

>>> ds = xarray.Dataset({'foo': (('x',), [1, 2, 3])})
>>> ds
<xarray.Dataset>
Dimensions:  (x: 3)
Coordinates:
  * x        (x) int64 0 1 2
Data variables:
    foo      (x) int64 1 2 3
>>> 'x' in ds.coords
True

新行为/ repr(xarray v0.9.0):

>>> ds = xarray.Dataset({'foo': (('x',), [1, 2, 3])})
>>> ds
<xarray.Dataset>
Dimensions:  (x: 3)
Coordinates:
    *empty*
Unindexed dimensions:
    x
Data variables:
    foo      (x) int64 1 2 3
>>> 'x' in ds.coords
False

我很高兴你提出这个问题。我们最近一直在调整repr(见https://github.com/pydata/xarray/issues/1199),试图以最清晰的方式传达数据模型的这一新方面,但我们可能还没有把它弄好。我们非常欢迎提出改进建议(请对链接的GitHub问题发表评论)。