首页 > 解决方案 > 如何有效地纠正 Xarray 数据集的偏度

问题描述

我正在研究 CDS API,我有兴趣实现最好的方法,我可以首先找出 Xarray DataSet 的特定 DataArray 的偏度。然后在同一个 DataArray 上应用任何合适的转换(例如 box Cox )。请注意,DataArray 是 2D 格式(经度和纬度)

问题是:

  1. scipy skew 方法提供了二维数组中每个元素的偏度。我知道理想情况下它应该像这样工作,但我正在寻找的是整个 2D DataArray 的倾斜值。

  2. 我想应用 box Cox 和 Xarray DataArray 上可用的任何其他转换,但它们似乎只接受一维数组。如何以最有效的方式为二维或更高维数组实现相同的功能?

我目前正在尝试做的是:

import xarray as xr
import scipy.stats as stats

ds = xr.open_dataset("datasets.nc")
tp = ds['tp']

tp = stats.boxcox(tp)

我期望的是在转换后有未倾斜的数据。有没有直接的方法,就像我试图做的那样?如果没有,我在这里错过了什么?

如果我尝试直接在数据数组“tp”上使用 boxcox,我会收到此错误(上面第二点的参考):

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-8-bbb0bad8d4d5> in <module>()
----> 1 tp_boxcox = stats.boxcox(tp)
      2 tp_boxcox

/usr/local/lib/python3.6/dist-packages/scipy/stats/morestats.py in boxcox(x, lmbda, alpha)
   1034     x = np.asarray(x)
   1035     if x.ndim != 1:
-> 1036         raise ValueError("Data must be 1-dimensional.")
   1037 
   1038     if x.size == 0:

ValueError: Data must be 1-dimensional.

标签: arrayspandasnumpyscipypython-xarray

解决方案


推荐阅读