我一直在尝试将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()
?
感谢
答案 0 :(得分:1)
您遇到的问题是,nansum
会返回一个numpy ndarray
,而不是DataArray
,这是函数传入apply
的内容应该回来了。
对于nansum
,您应该使用xarray.Dataset.sum
,如果您的数据是浮动的,默认会跳过NaN。
答案 1 :(得分:1)
Jeremy是正确的,内置的sum()
方法默认情况下已跳过NaN。但是,如果您想提供自定义聚合功能,可以使用reduce
,例如ds.reduce(np.nansum, axis=2)
。