这个问题很接近:用 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]
任何帮助表示赞赏。