2016-12-24 3 views
2

У меня есть этот dataframeПреобразование данных в массив numpy?

 Begin End Duration ID 
42 40680 40846 167  18 

и я хочу, чтобы преобразовать Numpy массив в таком виде:

array([40680 , 40860 ,167,18]) 

Я использую для функции преобразования as_matrix и я после него RESHAPE (1,4), но он не работает! Это дает мне этот формат: [[40680 40846 167 18]] любые предложения, пожалуйста? Мне нужно преобразовать в этот формат, чтобы я мог применить функцию «precision_recall_curve».

+1

Try 'array.ravel()' вместо 'reshape'. Итак, если dataframe является 'df':' df.values.ravel() 'или просто:' np.ravel (df) '. – Divakar

+0

Извините, но даже это решение не работает, оно дает мне такой массив: [40680 40846 167 18] –

+0

Разве это не то, чего вы ожидали? – Divakar

ответ

2

У вас есть что-то вроде этого:

pd.DataFrame({'a':[1],'b':[2],'c':[3]}, index=[42]) 
Out[27]: 
    a b c 
42 1 2 3 

Вы хотите получить одну строку как массив NumPy:

df.loc[42].values 
Out[30]: array([1, 2, 3]) 
+0

извините! Но это не работает! это то, что я получаю! [40680 40846 167 18], и я применил y_true = eval_seg.loc [42] .values! Я уверен, что формат ввода - это dataframe, это то, что я получаю, когда печатаю тип (eval_seg)

+0

@jaouaemna: Извините, но я понятия не имею, что вы сейчас говорите , Может быть, если вы можете добавить более подробные сведения с полным исполняемым кодом на свой вопрос .... –

+0

ну, я имею в качестве входных данных фрейм! и я хочу преобразовать его в массив numpy в качестве формата, о котором я упоминал ранее. потому что я хочу использовать этот массив в качестве входных данных в функции '' precision_recall_curve '', которая вычисляет точность и отзыв между двумя массивами. Поэтому, когда я использую этот массив [40680 40846 167 18], функция получает меня как ошибку: «ValueError: данные не являются бинарными, а pos_label не указан» –