2009-12-27 5 views

답변

236

사용 tolist()이 그들이있을 수 있습니다 어떤 NumPy와 유형의 값을 변환하는 것을

import numpy as np 
>>> np.array([[1,2,3],[4,5,6]]).tolist() 
[[1, 2, 3], [4, 5, 6]] 

주 (예 : np.int32 또는 np.float32) (리스트의)은 "가까운 호환 파이썬 유형"에 . numpy 데이터 형식을 유지하려면 배열에서 list()를 호출하면 numpy scalars의 목록이 만들어집니다. (주석에서 그 지적 Mr_and_Mrs_D 감사합니다.)

+0

목록이 float32 인 경우 'tolist'는'floats's로 변환합니다. 그럴 필요는 없습니다. 'list (myarray) '를 사용하면이 문제가 발생하지 않습니다. 왜'tolist'를 선호합니까? –

+0

@Mr_and_Mrs_D는 배열에 수레가 있음에도 불구하고 결과 목록이 정수가되도록 하시겠습니까? 이것은 전혀 다른 질문입니다. 물론 float32 값 임에도 불구하고 모두 필수적이라고 지정해야합니다. 어쨌든, 당신이 그런 상황에 처한 경우,'myarray.astype (np.int32) .tolist()'가 옵션이 될 것이며, 당신이 달성하고자하는 것을 명시 적으로 생각할 것입니다. (그리고 마지막으로'list (array_of_type_float32)'는 내가 시도 할 때 정수를 제공하지 않으므로 ... 당신이 무엇을 요구하는지 모르겠습니다.) –

+0

정수를 언급 한 적이 없습니다 -'float32_array = np.array [0.51764709], np.float32); print (float32_array.tolist()); print (list (float32_array))' –

37

NumPy와 배열이 가지고 tolist method :

In [1]: arr=np.array([[1,2,3],[4,5,6]]) 

In [2]: arr.tolist() 
Out[2]: [[1, 2, 3], [4, 5, 6]] 
3

NumPy와 배열 형태는 2D 경우, NumPy와 .tolist 방법은 중첩 된 배열을 생성합니다.

플랫 목록이 필요한 경우 아래 방법이 효과적입니다.

import numpy as np 
from itertools import chain 

a = [1,2,3,4,5,6,7,8,9] 
print type(a), len(a), a 
npa = np.asarray(a) 
print type(npa), npa.shape, "\n", npa 
npa = npa.reshape((3, 3)) 
print type(npa), npa.shape, "\n", npa 
a = list(chain.from_iterable(npa)) 
print type(a), len(a), a` 
관련 문제