1

我有一个 3d 形状数组(时间、纬度、经度)。我想计算每个 lon/lat 点的线性趋势。我知道我可以简单地遍历所有点并在每个点使用辣味.stats.linregress。但是,对于大型阵列来说,这变得相当缓慢。

scipy 函数“detrend”可以计算和去除 n 维数组的线性趋势,而且速度非常快。但我找不到任何方法来计算趋势。

有谁知道计算大网格上每个点的斜率、截距、r 值和 p 值的快速方法?

非常感谢任何帮助/建议!

干杯乔金

4

2 回答 2

1

我会调查,numpy.polyfit但我不确定它有什么性能提升scipy.stats.linregress。根据我的经验,它非常快。您可能需要自己做一些数学运算才能从残差和协方差矩阵中获取 r 和 p 值。

于 2016-02-11T01:52:23.027 回答
0

可以使用 signal.detrend 轻松计算斜率(m)和截距(c)。请检查下面的代码以获取信号 y

    detrended_y=signal.detrend(y, axis=0, type='linear')
    trend_y=y-detrended_y
    trend_c=trend_y[0,:,:] # intercept
    trend_m=trend_y[1,:,:]-trend_y[0,:,:] #slope
于 2020-08-30T17:15:12.367 回答