

numpyのunique()メソッドの挙動が全く分からず困っています。

[code]

    import numpy as np
    list_with_dupes = [1,5,6,2,5,6,8,3,8,3,3,7,9]
    #(array([1, 2, 3, 5, 6, 7, 8, 9])重複が取り除かれたインデックス？を返す
    print(np.unique(list_with_dupes, return_index=True))
    array_with_dupes = np.array([[1,5,7,3,9,11,23],[2,4,6,8,2,8,4]])
    print(np.unique(array_with_dupes))
    
[/code]

2つの集合からunique()メソッドを使いprintすると答えとしてこのような値になるようです。

[code]

    #array([ 0,  3,  7,  1,  2, 11,  6, 12], dtype=int64))
    #[ 1  2  3  4  5  6  7  8  9 11 23]
    
[/code]

array([ 0, 3, 7, 1, 2, 11, 6, 12],
dtype=int64))の答えになる意味がわかないのですが教えていただけないでしょうか？


CC BY-SA 3.0
2017-12-10T13:53:47.137
40171
2017-12-10T14:22:27.473
2017-12-10T14:22:27.473
26076
26076
question
python numpy
numpyのunique()メソッドの挙動が分からない


`np.unique`で`return_index=True`とすると、uniqueな要素を持った行列と、入力として与えられた行列に対してのindexが返って来ます。下記のように、indexをはじめの行列に作用させるとunique_arrayと同じ要素が得られると思いますよ。

[code]

    import numpy as np
    list_with_dupes = [1,5,6,2,5,6,8,3,8,3,3,7,9]
    
    unique_array, index_array = np.unique(list_with_dupes, return_index=True)
    
    print('unique array : ', unique_array)
    # unique array :  [1 2 3 5 6 7 8 9]
    print('index array', index_array)
    # index array [ 0  3  7  1  2 11  6 12]
    print([list_with_dupes[idx] for idx in index_array])
    # [1, 2, 3, 5, 6, 7, 8, 9]
    
[/code]


CC BY-SA 3.0
2017-12-10T14:11:46.873
40172
2017-12-10T14:11:46.873
26311
40171
answer