对二维数组,逐元素地线性拟合,调用 stats.linregress(x, y)

问题遇到的现象和发生背景

我需要对长时间序列的栅格数据逐象元地做线性拟合。即x轴为第1n年第一个传感器的栅格数据,轴为第1n年第二个传感器的栅格数据。
简化下来相当于就是两个二维数组对应元素做线性拟合,但是出现了问题:
ValueError: too many values to unpack (expected 4)

于是我尝试例举了二维数组进行线性拟合出现了同样的问题:

img

是stats.linregress(x, y)函数无法实现对二维数组的线性拟合吗?有没有能直接对二维数组直接线性拟合的办法?
转换成一维的话又怎么回到二维的状态呢?该如何解决呢?

问题相关代码
import numpy as np
from scipy import stats, linalg

def f(a):
     b = np.array([[5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
     n = np.array([[9, 10, 11, 12], [13, 14, 15, 16],[17, 18, 19, 20]])
     y = np.concatenate((b,n), axis=0)
     print("y:", y)
     res = stats.linregress(a, y)
     return res

c = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
d = np.array([[5,6,7,8],[9,10,11,12],[13,14,15,16]])
m = np.concatenate((c, d), axis=0)
print("m:", m)
res = f(m)

谢谢!

自己已解决
记录一下:

1.思路如下图

img


img


img


img

2.两个二维数组每一行的数据分别做线性回归 的 代码:

import numpy as np
from scipy import stats, linalg

g = np.array([[1,6,8],[3,2,1],[2,6,10],[8,9,11]])
print("g:", g)
print("g第一行:", g[0])
a = g.shape[0]
print("a(行数):", a)
m = np.array([[2,7,9],[6,5,2],[4,8,12],[10,12,15]])
print("m:", m)
print("m(第一行):", m[0])
for i in range(a):
    res = stats.linregress(g[i], m[i])
    print("res:", res)