2013-03-31 1 views
0

아래 코드를 사용하여 CSV 파일에서 배열을 읽습니다.numpy.loadtxt에 의해 반환 된 하나의 차원 배열을 분할하는 방법

na_orders = np.loadtxt(orders_file, delimiter=',', skiprows=0,dtype='i4,i4,i4,S5,S4,f4') 

이 돌려

[(2011, 1, 10, 'A', 'B', 1500.0) (2011, 1, 13, 'A', 'S', 1500.0) 
(2011, 1, 13, 'I', 'B', 4000.0) (2011, 1, 26, 'G', 'B', 1000.0) 
(2011, 2, 2, 'X', 'S', 4000.0) (2011, 2, 10, 'X', 'B', 4000.0) 
(2011, 3, 3, 'G', 'S', 1000.0) (2011, 3, 3, 'I', 'S', 2200.0) 
(2011, 6, 3, 'I', 'S', 3300.0) (2011, 5, 3, 'I', 'B', 1500.0) 
(2011, 6, 10, 'AL', 'B', 1200.0) (2011, 8, 1, 'G', 'B', 55.0) 
(2011, 8, 1, 'G', 's', 55.0) (2011, 12, 20, 'A', 'S', 1200.0)] 

내가

+1

다른 유형의 데이터로 작업하는 경우 [pandas] (http://pandas.pydata.org/)가 더 적합 할 수 있습니다. – root

답변

1

사용 dtype=object 생성자 다른 열에 각 요소를 분리하는 2 차원 배열 할 dimentional 하나

>>> import numpy as np 
>>> l = [(2011, 1, 10, 'A', 'B', 1500.0), ..., (2011, 12, 20, 'A', 'S', 1200.0),] 
>>> a = np.array(l, dtype='object') 
>>> a 
array([[2011, 1, 10, A, B, 1500.0], 
... 
     [2011, 12, 20, A, S, 1200.0]], dtype=object) 
>>> a.shape 
(14, 6) 
>>> sum(a[:, -1]) 
26510.0 

이러한 배열은 프리미티브 값의 배열만큼 효율적이지는 않지만 numpy 배열이 지원하는 모든 연산을 지원하면서도 다른 열에는 다른 유형을 제공합니다.

관련 문제