2012-03-26 3 views
3

나는 배열 형태의 Y를 가지고있다. (이것은 단지 예제 일 뿐이며, 나는이 형태로 거대한 데이터를 가지고있다.) 이 배열은 NumPy와의 vstack 및 hstack를 사용하여 형성된다 (즉, 나는 몇 가지 복잡한 작업하여 얻은 나는이 배열을 얻는 방법을 변경하지 않으) :numpy.ndarray를 목록으로 변환하는 효율적인 방법이 있습니까?

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

지금은에 데이터를 입력하고를 libsvm 함수를 사용하면이 라이브러리는 입력 매개 변수가 사전, 목록 또는 튜플 형식이어야합니다. 따라서, 동일한위한 코드이다

prob=svm_problem(y, Y1) 

상기 함수 'XI는 사전의 목록 또는 튜플이어야한다'고 에러가 발생. 내가 아는 또 다른 방법은 Y를 반복적으로 목록으로 변환하는 것입니다. 그 방법은 다음과 같습니다.

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

위의 방법은 잘 작동하지만 느린 것은 제가 가지고있는 거대한 데이터입니다. 같은 것을 성취 할 더 빠른 방법이 있습니까?

답변

7
>>> Y.tolist() 
[[1, 1, 2], [1, 2, 0], [-1, 3, 1], [-1, 2, 2]] 

큰 2 차원 배열의 경우보다 훨씬 빠르지는 모르겠습니다. 이러한 배열을 일반 목록으로 변환하는 것은 본질적으로 비효율적 인 작업이므로 NumPy를 처음 사용하는 이유입니다.

관련 문제