2015-04-13 4 views
0

Я пытаюсь сделать K- означает, кластеризацию с SciPy после этого урока: http://glowingpython.blogspot.no/2012/04/k-means-clustering-with-scipy.htmlИзготовление ndarray из двух списков питона

Проблема в том, что он использует vstack сделать произвольные точки данных, которые, в свою очередь, возвращает ndarray. У меня есть два списка: длины и широты. Как объединить их с ndarray, чтобы я мог использовать его пример?

lengths = [300.0, 300.0, 300.0, 300.0, 303.0, 300.0] 
breadths = [9.6, 9.7, 9.8, 10.3, 6.8, 9.4] 

ответ

1

Numpy-х vstack будет просто принять их как списки штраф:

In [23]: np.vstack((lengths, breadths)) 
Out[23]: 
array([[ 300. , 300. , 300. , 300. , 303. , 300. ], 
     [ 9.6, 9.7, 9.8, 10.3, 6.8, 9.4]]) 

Если вы хотите, чтобы явно преобразовать его в массив, вы можете сделать:

In [24]: np.array(lengths) 
Out[24]: array([ 300., 300., 300., 300., 303., 300.]) 

Однако, я думаю, в случае этого примера kmeans ожидает наблюдения как разные строки, поэтому вам необходимо транспонировать: np.vstack((lengths, breadths)).T

+0

Благодарим вас за ответ. Похоже, что происходит что-то неправильное, так как его данные представляют собой набор кортежей, где каждый кортеж состоит из каждой точки [[2 2] [2 4] [2 7]] и т. Д., В то время как этот результат дает два длинных массива. – bjornasm

+0

Его данные представляют собой 2D-массив, где столбцы представляют собой различные функции (например, x, y или length, ширина в вашем случае). См. Мое обновление. – joris

+0

Я знаю, что благодарность должна быть подтверждена голосованием и принятием (что я сделал), но я просто хочу выразить свою благодарность и в словах. Спасибо. – bjornasm

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