猫咪不是故意的 2022-04-06 20:51 采纳率: 100%
浏览 185
已结题

对二维数组,逐元素地线性拟合,调用 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条回答 默认 最新

  • 猫咪不是故意的 2022-04-07 15:40
    关注

    自己已解决
    记录一下:

    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)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题