2016-09-02 10 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が実際にその情報を必要としているのか分かりませんが、有用な情報はそれほどありません。 –

+0

Thx hpaulj!次回は、質問を投稿する前にマニュアルをよく読んでいきます。 – Timen123

関連する問題