我有一个 3D 数组,其中包含地球表面每个网格点的海气碳通量时间序列(模型输出)。我想删除时间序列中的趋势(线性)。我遇到了这段代码:
from matplotlib import mlab
for x in xrange(40):
for y in xrange(182):
cflux_detrended[:, x, y] = mlab.detrend_linear(cflux[:, x, y])
我可以通过不使用 for 循环来加快速度吗?
请您参考如下方法:
Scipy 有很多 signal processing工具。 使用 scipy.signal.detrend() 将消除沿数据轴的线性趋势。从文档中可以看出,完整数据集的线性趋势将从每个网格点的时间序列中减去。
import scipy.signal
cflux_detrended = scipy.signal.detrend(cflux, axis=0)
使用 scipy.signal 将获得与使用原始帖子中的方法相同的结果。使用 Josef 的 detrend_separate() 函数也将返回相同的结果。
