将数据分配给数据集 xarray 在脚本中不起作用,但在控制台中起作用

问题描述

我正在使用 Spyder IDE 并且在 xarray 中有一个令人困惑的问题。当数据分配给脚本中的数据集时,x 轴和 y 轴会以某种方式转置,但坐标/尺寸都没有。但是,当在控制台中分配数据时,数据是正确完成的。这是我在做什么:

# set up dataset
empty = np.zeros((19,(z_set.nzv).size,ny,nx))
vels = xr.Dataset(
       {
       "uvel": (["T","Z","Y","X"],empty),"vvel": (["T",},coords={
           "Y": (wvel["Y"]),"X": (wvel["X"]),"T": (wvel["T"].isel(T=days)),)

# calculate some data
vels["uvel"][:,:,:] = -(g/f)*(eta["ETAN"].isel(T=days,Z=0)).differentiate("Y")

此图为主脚本计算的数据,有误。

calculated in main script

此图为控制台计算出的数据,是正确的。

enter image description here

这是用于计算数据的 eta 数据集示例。存在其他数据集,例如 wvel。我已经在其他数据集上设置了数据集 vels

In[32]: eta
Out[32]: 
<xarray.Dataset>
Dimensions:      (T: 430,X: 200,Y: 200,Z: 1,Zmd000001: 1)
Coordinates:
  * X            (X) float64 5e+03 1.5e+04 2.5e+04 ... 1.985e+06 1.995e+06
  * Y            (Y) float64 5e+03 1.5e+04 2.5e+04 ... 1.985e+06 1.995e+06
  * T            (T) datetime64[ns] 2012-04-15 2012-04-16 ... 2013-06-18
Dimensions without coordinates: Z,Zmd000001
Data variables:
    diag_levels  (Zmd000001) float64 dask.array<chunksize=(1,),Meta=np.ndarray>
    iter         (T) int32 dask.array<chunksize=(1,Meta=np.ndarray>
    ETAN         (T,Z,Y,X) float32 dask.array<chunksize=(1,1,200,200),Meta=np.ndarray>

我对此不知所措。我可以转置数据,但这是一个黑客而不是修复。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)