我假设您从lstsq example 中提取了m, c = np.linalg.lstsq(A, y)[0] 行。
在示例中,他们使用一个变量和常数解决线性回归问题。结果,此问题的np.linalg.lstsq(A, y) 返回四元素元组(array([ 1. , -0.95]), array([ 0.05]), 2, array([ 4.10003045, 1.09075677]))(第一个元素 - 解,第二个 - 残差,第三个 - 系数矩阵秩,最后一个元素 - 系数矩阵的奇异值)。
因此,np.linalg.lstsq(A, y)[0](在示例中)返回包含两个元素的数组,这些元素可以按照他们的操作方式解包:m, c = np.linalg.lstsq(A, y)[0] (m = 1., c = -0.95)。
您正在使用 两个 变量和常数解决回归问题。因此,np.linalg.lstsq(A, y)[0] 将返回包含三个元素的数组,如果您想按照示例中的方式对其进行解包,您可以这样做:
x1, x2, c = np.linalg.lstsq(A, y)[0]
但更方便的方法是(在我看来):
x, residuals, rank, s = np.linalg.lstsq(A, y) #lstsq func always return four-element tuple
print 'solution is %s.' % str(x)
print 'matrix A rank is %d.' % rank
print 'residuals are %s.' % str(residuals)
print 'singular values of A are %s.' % str(s)
print 'first variable is %f.' % x[0]
print 'second variable is %f.' % x[1]
print 'constant is %f.' % x[2]