1

这个问题很接近:用 numpy minimum squares 拟合线性曲面,但没有样本数据。我一定非常慢,但似乎我无法让它工作。

我有以下代码:

    import numpy as np
    XYZ = np.array([[0, 1, 0, 1],
        [0, 0, 1, 1],
        [1, 1, 1, 1]])
    A = np.row_stack((np.ones(len(XYZ[0])), XYZ[0, :], XYZ[1:]))
    coeffs = np.linalg.lstsq(A.T, XYZ[2, :])[0]
    print coeffs

输出是:

    [  5.00000000e-01   5.55111512e-17   9.71445147e-17   5.00000000e-01]

我想要z = a + bx + cy,即三个系数,但输出给了我四个。我在这里哪里出错了?我预计 coeffs 是这样的:

    [ 1.0 0.0 0.0]

任何帮助表示赞赏。

4

1 回答 1

0

XYZ[1, :]彼得施耐德(评论)是对的:你会想喂row_stack

>>> A = np.row_stack((np.ones(len(XYZ[0])), XYZ[0, :], XYZ[1, :]))
>>> np.linalg.lstsq(A.T, XYZ[2, :])[0]
array([  1.00000000e+00,  -7.85046229e-17,  -7.85046229e-17])
于 2012-12-04T10:24:43.323 回答