2016-10-29 2 views
3

나는 파이썬을 배우고 있으며 개체를 처리하는 동안 약간의 문제가 있습니다. 나는 해결책을 찾기 위해 노력했지만 아무데도 이끄는 것이 아니므로 여러분에게 묻습니다.개체를 배열로 변환하는 방법

개체의 첫 번째 X 열을 가져오고 싶지만 모든 행에서 같은 크기가 아니기 때문에 할 수 없습니다.

나는이 객체가 있습니다

array([[45, 45, 45, 50, 51, 50, 50, 50, 51, 50, 52], 
     [45, 45, 45, 50, 51, 50, 50, 50, 51, 50, 51, 52, 55], 
     [45, 45, 45, 50, 51, 50, 52, 50, 50, 50, 51], 
     [50, 51, 52, 55, 50, 52, 50, 50, 50, 51, 50, 51]], dtype=object) 

을 그리고 나는 이런 식으로 뭔가 좀하고 싶습니다 :

array([[45, 45, 45, 50], 
     [45, 45, 45, 50], 
     [45, 45, 45, 50], 
     [50, 51, 52, 55]]) 

는이 문제를 해결하기 위해 어떻게 할 수 있습니까? 당신의 도움에 대한 감사

알바

+1

'dtype = object'의 1 차원 4 요소 배열이 있습니다. 각 요소는 목록입니다. 이것은 기본적으로 목록의 목록과 동일합니다. 일반적으로 그걸로 취급하는 것이 가장 좋습니다. 배열 래퍼 (wrapper)는 많은 것을 추가하지 않으며, 심지어는 느려지기도합니다. – hpaulj

답변

3

무엇

에 대한
import numpy as np 
data = np.array([[45, 45, 45, 50, 51, 50, 50, 50, 51, 50, 52], 
       [45, 45, 45, 50, 51, 50, 50, 50, 51, 50, 51, 52, 55], 
       [45, 45, 45, 50, 51, 50, 52, 50, 50, 50, 51], 
       [50, 51, 52, 55, 50, 52, 50, 50, 50, 51, 50, 51]], dtype=object) 
newData = np.array([d[:4] for d in data]) 
+0

고마워, 그거야! 당신은 그것을 위해 그것을 할 수있는 방법이 있다고 생각합니까? 예를 들어 배열 함수 또는 이와 비슷한 것은? –

0
다음과 같이 당신은 또한 행의 수를에서 지정할 수있는보다 일반적인 솔루션을 필요로 할 수 있습니다

:

import numpy as np 

arr = np.array([[45, 45, 45, 50, 51, 50, 50, 50, 51, 50, 52], 
     [45, 45, 45, 50, 51, 50, 50, 50, 51, 50, 51, 52, 55], 
     [45, 45, 45, 50, 51, 50, 52, 50, 50, 50, 51], 
     [50, 51, 52, 55, 50, 52, 50, 50, 50, 51, 50, 51]], dtype=object) 

def slice_array(arr, num_cols, num_rows=None): 
    if num_rows: 
     return np.array([row[:num_cols] for row in arr[:num_rows]]) 
    return np.array([row[:num_cols] for row in arr]) 

res1 = slice_array(arr, 4, 2) 
res2 = slice_array(arr, 4) # Like in your case 

결과 :

>>> res1 
array([[45, 45, 45, 50], 
     [45, 45, 45, 50]]) 
>>> res2 
array([[45, 45, 45, 50], 
     [45, 45, 45, 50], 
     [45, 45, 45, 50], 
     [50, 51, 52, 55]]) 
관련 문제