2016-09-02 2 views
-1

나는 numpy 배열 (3628621 요소의 긴 벡터)의 고유 한 요소 색인을 얻으려고합니다.numpy.unique가 고유하지 않은 결과를 제공합니까?

Vector 
Out[165]: array([712450, 714390, 718560, ..., 384390, 992041, 94852]) 

Loc = np.where(np.unique(Vector))  # Find indices of unique elements 
Vector_New = Vector[Loc]    # Create new vector with all unique elements 
np.where(Vector_New == 173020)   # See how often/where '173020' exists 
Out[166]: (array([ 7098, 11581], dtype=int64),) 

그래서, 정수 '173020'는 새로운 벡터에 두 번 계속 존재 내가 것으로 예상하지만, : 나는 여전히 중복을 발견하고 독특한 요소를 선택하려고 할 때 때문에 그러나, 나는 뭔가 잘못을 수행해야합니다 모든 요소는 고유해야합니다. 새로운 벡터는 11594 요소입니다.

도움 주셔서 감사합니다.

감사합니다, Timen

+2

'np.where (np.unique (Vector)) '는'고유 요소 색인 찾기 '가 아닙니다. – user2357112

+1

@ user2357112가 의미하는 것은'Vector_New = np.unique (Vector)'를 실제로하고 싶다는 것입니다. 당신이하고있는 일은'Loc = np.arange (np.unique (Vector) .size)'와 동등하지만,'Vector'에 색인을 붙이면 달성하려는 것에는 아무 것도 없습니다. –

+0

그래, 왜 그렇게 생각했는지 모르겠다. 문제를 일으켜서 미안 해요! – Timen123

답변

1

np.unique 활성화 할 수 있으며, 당신에게 필요한 정보를 제공하는 몇 가지 매개 변수가 있습니다. 전화 서명 :

np.unique(ar, return_index=False, return_inverse=False, return_counts=False) 

문서를 읽습니다.

In [50]: keys 
Out[50]: 
array([1, 3, 5, 2, 0, 7, 4, 7, 7, 2, 7, 5, 5, 3, 6, 2, 3, 5, 5, 5, 6, 9, 6, 
     5, 2, 1, 6, 6, 5, 9, 9, 6, 5, 5, 9, 9, 6, 3, 7, 0, 5, 1, 7, 6, 2, 4, 
     1, 0, 6, 5, 4, 8, 8, 4, 2, 1, 8, 3, 1, 9, 8, 4, 4, 2, 4, 7, 2, 6, 8, 
     6, 5, 2, 4, 9, 1, 5, 3, 1, 5, 6, 2, 2, 8, 4, 0, 4, 9, 0, 8, 1, 5, 3, 
     1, 3, 7, 1, 5, 8, 5, 8]) 
In [51]: np.unique(keys, return_counts=True, return_index=True) 
Out[51]: 
(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), 
array([ 4, 0, 3, 1, 6, 2, 14, 5, 51, 21], dtype=int32), 
array([ 5, 11, 11, 8, 10, 18, 12, 8, 9, 8])) 
+2

OP가 실제로 OP 정보를 필요로하는지 모르겠지만 유용 정보는 그다지 적지 않습니다. –

+0

Thx hpaulj! 다음 번에 질문을 올리기 전에 매뉴얼을 더 자세히 읽을 것입니다. – Timen123

관련 문제