2015-10-16 13 views
1

Я получаю сообщение об ошибке:TypeError: ожидается вектор 1D для й

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 & является;

Состоит из 736 строк данных. Я хочу переписать одну строку на другую. Может ли кто-нибудь помочь?

Спасибо.

+1

Я думаю, нам нужна дополнительная информация о dataframe. Как вы создаете/получаете x1 и y1? Можете ли вы изменить свой вопрос, чтобы предоставить эту информацию? – amd

+0

Я не могу воспроизвести вашу ошибку. Что такое x1.shape? Из какого модуля возникает frame_query? – amd

+0

Что является источником 'x1',' y1'? Упоминание о кадре данных предполагает 'pandas', но у вас нет тега' pandas' – hpaulj

ответ

2

Вы хотите превратить кадр данных в массив 1D. Прежде всего позвольте мне создать фрейм данных

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) 

Я думаю, что проблема, которую вы испытываете, что массивы вы создаете имеют дополнительное измерение. Например, массивы a и b ниже «выглядят» так же, как и x1y1,

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

, но из-за двойного кронштейна ([[...]]), они на самом деле являются двумерными. Я могу уменьшить размер, выбрав только 0-й столбец:

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

Тогда полифит будет работать. EDIT: если вы посмотрите на форму массивов (например, x1.shape), вы сможете узнать, есть ли у вас дополнительные размеры.

0

Попробуйте сделать x1 и y1 np.array:

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

i get 'ValueError: невозможно скопировать последовательность с размером 736 на ось массива с размером 1' –

+0

Можете ли вы дать больше информации о своих x1 и y1? из вашего оригинального сообщения кажется, что это 1D векторы по 3 элемента каждый. Где вы получаете размер 736 ??? Полифит работает для меня, когда я использую np.array – Marco

Смежные вопросы