微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将数据分配给数据集 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 举报,一经查实,本站将立刻删除。