Есть ли эффективный метод для преобразования numpy.ndarray в список? - PullRequest
4 голосов
/ 26 марта 2012

У меня есть массив Y формы (это только пример, у меня есть огромные данные в этой форме).Массив формируется с использованием vstack и hstack от numpy (то есть я не хочу менять способ получения этого массива, как я получил его с помощью некоторых сложных операций):

 Y=array([[1,  1,2],
        [1,  2,0],
        [-1, 3,1],
        [-1, 2,2]])
y=[1,1,-1,-1]
Y1=list(Y)

Теперь я ввожу данныедля функции libsvm эта библиотека ожидает, что входные параметры будут в форме словаря, списка или кортежа.Таким образом, код для того же:Другой способ, который я знаю, - это итеративное преобразование Y в список.Способ сделать это:

Y1=[] 
for i in range(0, Y.shape[0]):
      Y1.append(list(Y[i])

Вышеуказанный метод работает хорошо, но медленно, учитывая огромные данные, которые у меня есть.Есть ли более быстрый способ сделать то же самое?

1 Ответ

7 голосов
/ 26 марта 2012
>>> Y.tolist()
[[1, 1, 2], [1, 2, 0], [-1, 3, 1], [-1, 2, 2]]

Я не уверен, будет ли это намного быстрее, чем у больших двумерных массивов.Преобразование таких массивов в простые списки списков является по своей сути неэффективной операцией, поэтому в первую очередь вы используете NumPy.

...