当我分配
xr.ones_like
对于数据集变量,我丢失了一些分配给坐标的数据:
import xarray as xr
import numpy as np
A, B, C = 2, 3, 4
ds = xr.Dataset()
ds.coords['source'] = (['a', 'b', 'c'], np.random.random((A, B, C)))
ds.coords['unrelated'] = (['a', 'c'], np.random.random((A, C)))
print('INITIAL:', ds['unrelated'], '\n')
# do 'ones_like' manually
ds['dest-1'] = (['a', 'b'], np.ones((A, B)))
print('AFTER dest-1:', ds['unrelated'], '\n')
ds['dest-2'] = xr.ones_like(ds['source'].isel(c=0))
print('AFTER dest-2:', ds['unrelated'], '\n')
输出:
INITIAL: <xarray.DataArray 'unrelated' (a: 2, c: 4)>
array([[0.185851, 0.962589, 0.772985, 0.570292],
[0.905792, 0.865125, 0.412361, 0.666977]])
Coordinates:
unrelated (a, c) float64 0.1859 0.9626 0.773 0.5703 0.9058 0.8651 ...
Dimensions without coordinates: a, c
AFTER dest-1: <xarray.DataArray 'unrelated' (a: 2, c: 4)>
array([[0.185851, 0.962589, 0.772985, 0.570292],
[0.905792, 0.865125, 0.412361, 0.666977]])
Coordinates:
unrelated (a, c) float64 0.1859 0.9626 0.773 0.5703 0.9058 0.8651 ...
Dimensions without coordinates: a, c
AFTER dest-2: <xarray.DataArray 'unrelated' (a: 2)>
array([0.185851, 0.905792])
Coordinates:
unrelated (a) float64 0.1859 0.9058
Dimensions without coordinates: a
为什么
unrelated
使用后丢失维度
xr。ones\u喜欢
?