2013-10-25 2 views
4

거기에 어떤 내장 NumPy와 기능을 얻을 것이라고 :어레이를 하나의 레이어로만 단조합니까?

a=np.asarray([[[1,2],[3,4]],[[1,2],[3,4]]]) 

을 그리고 반환 :

b=[[1,2],[3,4],[1,2],[3,4]] 

를? 한 층이 평평 해지는 것과 같습니다.

P. 벡터화 옵션을 찾고 있는데 그렇지 않으면이 멍청한 코드를 사용할 수 있습니다.

flat1D(a): 
    b=np.array([]) 
    for item in a: 
     b=np.append(b,item) 
    return b 
+0

내 바보 같은 코드가 작동하지 않습니다 사용할 수 있습니다! : D – Cupitor

답변

8

단순히 배열을 바꿀 수 있습니다. 라벨 사이

>>> a.flatten() 
array([1, 2, 3, 4, 1, 2, 3, 4]) 

의 차이 : 당신이 확신하는 경우 배열을 복사하려면,

>>> a.ravel() 
array([1, 2, 3, 4, 1, 2, 3, 4]) 

을 또는 :

>>> a.reshape(-1,a.shape[-1]) 
array([[1, 2], 
     [3, 4], 
     [1, 2], 
     [3, 4]]) 

표시 된 코드는 1 차원 배열을 반환,이 작업을 수행하는 그리고 flatten은 주로 flatten이 항상 복사본을 반환하고 가능한 경우 ravel이 뷰를 반환하고 그렇지 않으면 복사본을 반환한다는 사실에서 비롯됩니다. 새 배열의 크기를 알고있는 경우

+0

우수 답변. 나는 오늘 새로운 것을 배웠다. –

0

당신은 튜플 (4,2) 이러한를 지정하고 .reshape()

a.reshape((4,2)) 
+1

이 답변은 너무 부족하고 특별히 유용한 정보는 없습니다. 초보자도 이해할 수 있도록 답변에 사용한 기술 및 개념에 대한 설명을 실제로 포함시키는 것이 가장 좋습니다. –

관련 문제