TypeError: expected 1D vector for x

TypeError: expected 1D vector for x

我遇到错误:

TypeError: expected 1D vector for x

关于这一行:

coefficients = np.polyfit(x1, y1, 1)

coefficients = np.polyfit(x1, y1, 1)
polynomial = np.poly1d(coefficients)
ys = polynomial(x1)

x1 和 y1 是;

x = frame_query("select * from table",db)
y = frame_query("select * from table",db)

x1 = np.array(x)
y1 = np.array(y)

由 736 行数据组成。我想将一行倒退到另一行。有人可以帮忙吗?

谢谢。

尝试使 x1 和 y1 np.array:

x1 = np.array([45,34,12])
y1 = np.array([19,46,22])

您需要将数据框转换为一维数组。首先让我创建一个数据框

import pandas
d = pandas.DataFrame([[1,2],[3,4],[5,6]],columns=['x1','y1'])

我认为以下内容符合您的要求:

import numpy
x1 = numpy.array(d['x1'])
y1 = numpy.array(d['y1'])
numpy.polyfit(x1,y1,1)

我认为您遇到的问题是您创建的数组有一个额外的维度。例如"look"下面的数组ab就如同x1y1,

a = numpy.array([[1,3,5]])
b = numpy.array([[2,4,6]])

但由于双括号 ([[...]]) 它们实际上是二维的。我可以通过只选择第 0 列来减少维度:

x1 = a[0,:]
y1 = b[0,:]

然后 polyfit 就可以工作了。编辑:如果您查看数组的形状(例如 x1.shape),您应该能够判断您是否有 "extra dimensions."