2014-12-17 3 views
17

가정 해 봅시다;numpy 배열 목록을 단일 numpy 배열로 변환하는 방법은 무엇입니까?

LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])] # inner lists are numpy arrays 

변환을 시도합니다.

array([[1, 2, 3, 4, 5], 
     [1, 2, 3, 4, 5], 
     [1, 2, 3, 4, 5]) 

내가 지금 vstack에 반복하여 해결하고 있지만

당신이 가장 효율적인 방법은 무엇을 제안 할 특히 큰 LIST 정말 느리다?

당신이 어떤 축을 따라 배열의 전체 순서를 연결할 수 있습니다 일반적으로
+2

'np.array (LIST) ': 그것은 (모든 같음) 모든 사이즈의 배열을 쌓을 수 있나요? – user545424

+3

'np.vstack (LIST)'? – HYRY

+2

'LIST = [[배열 ([1, 2, 3, 4, 5]), 배열 ([1, 2, 3, 4, 5], [1,2,3,4,5] 올바른 파이썬 구문이 아닙니다. 명확히하십시오. – Marcin

답변

24

:

numpy.concatenate(LIST, axis=0) 

하지만은 2 차원의 목록 (의 모양과 각 배열의 차원에 대해 걱정할 필요 할 5x3 출력의 경우 2 차원 배열이 모두 2 차원 배열인지 확인해야합니다. 1 차원 배열을 2 차원 출력의 행으로 연결하려면 차원을 확장해야합니다.

vstack은 전체 목록을 연결하기 전에 필요에 따라 1 차원 배열 및/또는 2 차원 배열 시퀀스를 자동으로 확장하므로 사용하기 쉬운 솔루션입니다. 새 치수가 필요한 경우 왼쪽에 추가되므로 각각 n - 요소 1D 배열은 1x1xn 2D 배열이됩니다. 2-D 출력의 로 1 및/또는 2-D 배열을 연결하기위한 유사한 hstack 기능도 있습니다

numpy.vstack(LIST) 

: 다시 말하지만, 당신은 반복 할 필요없이 전체 목록을 한 번에 연결할 수 있습니다 (확장이 필요한 경우 n - 요소 1D 배열이 n -by-1 2D 배열이되도록 오른쪽에 새 치수가 추가됩니다.

마지막으로, 1-D 어레이의 수직 스택의 특정 경우에, 다음과 같은 동작 : 배열이 다른 배열의 순서가 구성 될 수

numpy.array(LIST) 

... 때문에, 새로운 추가 차원을 처음까지

+3

그는 출력으로 2 차원 어레이를 원한다고 생각합니다. – Beefster

0

NumPy 버전 1.10부터는 stack이라는 메서드가 있습니다.

# List of arrays. 
L = [np.random.randn(5,4,2,5,1,2) for i in range(10)] 

# Stack them using axis=0. 
M = np.stack(L) 
M.shape # == (10,5,4,2,5,1,2) 
np.all(M == L) # == True 

M = np.stack(L, axis=1) 
M.shape # == (5,10,4,2,5,1,2) 
np.all(M == L) # == False (Don't Panic) 

# This are all true  
np.all(M[:,0,:] == L[0]) # == True 
all(np.all(M[:,i,:] == L[i]) for i in range(10)) # == True 

즐기

관련 문제