2015-10-16 93 views
1

我收到错误预期1D向量类型错误:对于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行数据。我想倒退到另一排。有人可以帮忙吗?

谢谢。

+1

我认为我们需要更多关于数据框的信息。你如何创建/获取x1和y1?你能编辑你的问题来提供这些信息吗? – amd

+0

我无法重现您的错误。什么是x1.shape? frame_query来自哪个模块? – amd

+0

'x1','y1'的来源是什么?提到一个数据框表明'pandas',但是你没有'pandas'标签 – hpaulj

回答

2

你想将数据帧分成一维数组。首先让我创建一个数据帧

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) 

我想你所遇到的问题是,你正在创建的阵列有一个额外的维度。例如,阵列ab下面“看”就像x1y1

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

但由于双支架([[...]])的它们实际上二维的。我可以通过选择第0列来减小尺寸:

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

然后,polyfit将工作。编辑:如果你看看阵列的形状(例如x1.shape),你应该能够判断你是否有“额外的尺寸”。

0

尽量让X1和Y1 np.array:

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

我得到'ValueError:不能将大小为736的序列复制到维数为1的阵列轴上' –

+0

您能给出关于您的x1和y1的更多信息吗?从你原来的帖子看来,它们都是3个元素的1D向量。你在哪里得到大小736?当我使用np.array时,它适合我的polyfit – Marco

相关问题