2011-09-28 1 views
2

열 값에 의해 조각 NumPy와 배열이

dd =[[0.567 2 0.611] 
     [0.469 1 0.479] 
     [0.220 2 0.269] 
     [0.480 1 0.508] 
     [0.324 1 0.324]] 

내가 2 별도의 배열 dd[:,1] ==1dd[:,1] ==2

이 배열이 NumPy와 배열과 같은 배열을 필요로 내가 얼마나 내가 무엇 후 :

na =[[0.469 1 0.479] 
     [0.480 1 0.508] 
     [0.324 1 0.324]] 

na2 =[[0.567 2 0.611] 
     [0.220 2 0.269]] 

시도해 보았습니다 np.where 정말 작동했습니다

답변

6
[~/repo/py] 
|32>dd[dd[:,1] == 1] 
[32] 
array([[ 0.469, 1. , 0.479], 
     [ 0.48 , 1. , 0.508], 
     [ 0.324, 1. , 0.324]]) 

[~/repo/py] 
|33>dd[dd[:,1] == 2] 
[33] 
array([[ 0.567, 2. , 0.611], 
     [ 0.22 , 2. , 0.269]]) 

가 또는 당신은 지능형리스트를 사용할 수 : 0 당신은 NumPy와 화려한 인덱싱을 사용할 수

[~/repo/py] 
|21>np.array([row for row in dd if row[1] == 1]) 
[21] 
array([[ 0.469, 1. , 0.479], 
     [ 0.48 , 1. , 0.508], 
     [ 0.324, 1. , 0.324]]) 

[~/repo/py] 
|22>np.array([row for row in dd if row[1] == 2]) 
[22] 
array([[ 0.567, 2. , 0.611], 
     [ 0.22 , 2. , 0.269]]) 

편집 :

[~/repo/py] 
|36>timeit dd[dd[:,1] == 1] 
100000 loops, best of 3: 6 us per loop 

[~/repo/py] 
|37>timeit np.array([row for row in dd if row[1] == 1]) 
100000 loops, best of 3: 11.5 us per loop 
: ipython에서 이러한 것들을 시간이하는 방법

+0

@wim이 빠릅니다. – Merlin

+0

첫 번째 예 (멋진 색인 생성)는 약 두 배 빠릅니다. – wim

+2

+1. 멋진 색인 생성은 더 빠르며 읽기가 훨씬 쉽습니다. – mtrw