1

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

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

并得到相同的错误:

无法使用没有明确维度名称的二维数据设置变量“var”。改为传递 (dims, data) 的元组。

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

有谁知道 xarray 可能实现的原因和时间np.nansum()?谢谢

4

2 回答 2

1

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

于 2017-10-02T15:42:57.717 回答
1

您在这里遇到的问题是nansum返回一个 numpy ndarray,而不是 a DataArray,这是传入的函数apply应该返回的内容。

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

于 2017-09-17T22:41:21.870 回答