假设我有10个4 * 4个numpy数组:
[[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4]]
[[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4],
[5, 5, 5, 5]]
etc...
我想要做的是为矩阵中的每个条目计算最小二乘线性回归。
所以我想取m0[0][0], m1[0][0], m2[0][0], etc...
并计算线性回归。然后对[0][1]
值执行相同操作。
有没有办法在不必先将所有[0][0]
值提取到新数组并调用numpy.linalg.lstsq
的情况下执行此操作?我可以以某种方式将我的10 * 4 * 4数组传递给numpy.linalg.lstsq
,以便计算多次回归吗?
答案 0 :(得分:0)
给这一点......我确信有一种方法可以让它更有效率。
def my_lin_reg(arr0):
n = arr0.shape[0]
s = arr0.shape[1] * arr0.shape[2]
arr1 = arr0.swapaxes(0, 2).reshape(s, n)
x = np.vstack([range(n), np.ones(n)]).T
mc = []
for sub_arr in arr1:
mc.append(np.linalg.lstsq(x, sub_arr)[0])
return np.array(mc)