2010-12-03 7 views
5

나는 하나의 Nx10x10 어레이에 함께 쌓고 싶은 수백 개의 10x10 어레이 목록을 가지고 있습니다. 처음에는 간단한2D numpy 배열 목록을 하나의 3D numpy 배열로 변환 하시겠습니까?

newarray = np.array(mylist)

을 시도하지만 그와 함께 반환 "에 ValueError :. 순서로 배열 요소를 설정"

그런데 dstack()의 ​​온라인 설명서는 완벽하게 보입니다. "... 이것은 2D 배열 (이미지)을 처리 용 단일 3D 배열로 쌓는 간단한 방법입니다." 정확히 내가하려고하는 것이지. 내 모든 배열은 10 × 10이기 때문에 홀수, "배열 차원이 d_0를 제외하고 동의해야 ValueError를은"그러나

newarray = np.dstack(mylist) 

나를 알려줍니다. 문제는 dstack()이 목록 대신 튜플을 기대한다고 생각했지만

같은 결과가 나타났습니다.

이 시점에서 나는 여기에서 그리고 다른 곳에서 내가 잘못하고있는 것을 알아 내기 위해 약 2 시간을 보냈다. 나는 목록의 목록을 목록의 목록으로 변환 한 다음 3D 배열로 다시 변환하려고 시도했으나 그 중 하나도 작동하지 않았습니다 (배열 목록의 목록과 함께 끝나고 "배열 요소 설정" 시퀀스 "오류로 다시).

도움을 주시면 감사하겠습니다.

+1

'[item.shape! = (10, 10)]'인 경우 '[mylist의 항목에 대한 item.shape]'과 같은 작업을 할 때 어떤 결과가 발생합니까? (즉, 모든 배열이 같은 모양을 가지고 있는지 확신 할 수 있습니까?) –

+1

dstack 내 모든 삶을 살아 왔습니다. hstack과 vstack을 [:, :, newaxis]와 함께 쓰고 있습니다. – wim

답변

13
newarray = np.dstack(mylist) 

. 예 :

import numpy as np 

# Here is a list of five 10x10 arrays: 
x=[np.random.random((10,10)) for _ in range(5)] 

y=np.dstack(x) 
print(y.shape) 
# (10, 10, 5) 

# To get the shape to be Nx10x10, you could use rollaxis: 
y=np.rollaxis(y,-1) 
print(y.shape) 
# (5, 10, 10) 
+0

* facepalm * 내 이미지에서 10x8, 그래서 그것은 순전히 내 자신의 부주의했다. 나는 롤축 부품에 대해 생각하지 못했다. 빠른 답변 감사합니다! – James