将 xarray.apply(np.nansum) 与参数一起使用

using xarray.apply(np.nansum) with args

我一直在尝试将 np.nansum 应用于 xr.Dataset (xarray),但不断出现错误。对于 3D 数据集,我尝试应用到 axis=2。语法不是很清楚,我可能误解了documentation,但我试过了:

ds.apply(np.nansum,axis=2)` and `ds.apply(lambda x: np.nansum(x,axis=2))

并得到相同的错误:

cannot set variable 'var' with 2-dimensional data without explicit dimension names. Pass a tuple of (dims, data) instead.

我猜这意味着它不知道新数据集对象 return 的维度名称是什么?任何想法如何解决这一问题?

有谁知道 xarray 为什么以及何时可以实现 np.nansum()? 谢谢

您 运行 遇到的问题是 nansum return 是一个 numpy ndarray,而不是 DataArray,这是传入 apply 的函数应该是 return.

对于 nansum,您应该只使用 xarray.Dataset.sum,如果您的数据是浮点数,默认情况下会跳过 NaN。

Jeremy 是正确的,内置 sum() 方法已经默认跳过 NaN。但是如果你想提供自定义聚合函数,你可以使用 reduce,例如 ds.reduce(np.nansum, axis=2).