2013-08-13 2 views
10

나는 pandas.Series와 np.ndarray를 사용하고 있습니다.ndarray를 배열로 변환하는 방법은 무엇입니까?

코드는 다음과

>>> t 
array([[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]) 
>>> pandas.Series(t) 
Exception: Data must be 1-dimensional 
>>> 

처럼 그리고 1 차원 배열로 변환 트라이 :

>>> tt = t.reshape((1,-1)) 
>>> tt 
array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) 

TT는 '['더블 있기 때문에 여전히 다차원입니다.

그래서 어떻게 실제로 변환 된 ndarray를 배열로 가져 옵니까?

검색 후 it says they are the same. 그러나 나의 상황에서는, 그들은 동일하게 일하지 않고있다.

답변

15

대안은 np.ravel을 사용하는 것입니다

>>> np.zeros((3,3)).ravel() 
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 

flatten 이상 ravel의 중요성은 ravel에만 데이터를 복사 필요한 경우이며, flatten 항상 데이터의 복사본을 반환하면서 보통 뷰를 돌려줍니다.

배열 평탄화 모양 변경을 사용하려면

tt = t.reshape(-1) 
4

사용 .flatten :

>>> np.zeros((3,3)) 
array([[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]) 
>>> _.flatten() 
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 

편집이 : 지적,이 모든 경우에 입력의 복사본을 반환합니다. 복사를 피하려면 @Ophion에서 제안한대로 .ravel을 사용하십시오.

+2

'.flatten'은보기가 아닌 사본을 반환하므로 일반적으로 첫 번째 옵션이 아니어야합니다. – Jaime

+0

@Jaime : 고마워, 나는 그것을 지적했다. ('.ravel'을 지적하기 위해 Ophion에게 +1을 ... 분명히 NumPy를 사용하지는 않습니다.) – nneonneo

1
tt = array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) 

oneDvector = tt.A1 

이 두 브래킷의 문제를 해결할 수있는 유일한 방법이며, 그 매트릭스를 찾지 1D 배열로 변환된다.

관련 문제