使用带有args的xarray.apply(np.nansum)

时间:2017-09-09 20:03:03

标签: python xarray

我一直在尝试将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))

并得到同样的错误:

  

无法在没有显式的情况下使用二维数据设置变量'var'   尺寸名称。传递一个(dims,data)元组。

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

有没有人知道为什么以及什么时候xarray可以实现np.nansum()? 感谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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