2016-11-11 11 views
0

私は、次のような状況があります:最初の列に重複したエントリがある場合は、行全体を削除する方法について最初の列に基づいて配列から重複行を削除する方法。

>>> a # I have 
    array([[0, 1], 
      [0, 2], 
      [0, 2], 
      [1, 3], 
      [1, 3], 
      [2, 1]]) 
    >>> new_a # I want to get to 
    array([[0, 1], 
      [1, 3], 
      [2, 1]]) 

基本的に純粋なnumpyのソリューションを。例:最初の行は[0、1]、2番目は[0,2]です - 0(最初の列)が複製されているので、最初のインスタンスを保持し、他のインスタンスを削除します。

私はいくつかのIf文とwhileループを設定できると確信していますが、より洗練されたソリューションがあるかどうかは疑問です。ありがとう!

+0

良い答えます。http://のstackoverflowを。 com/a/41110552/6091685 – jake

答えて

5

ここnp.uniqueでそれを行うための一つの方法は、最初の列に沿ってユニークなアイテムのインデックスを取った後、インデックスを持つ第一の軸に沿って配列スライス、です:

_, indices = np.unique(arr[:, 0], return_index=True) 
print(arr[indices, :]) 
# [[0 1] 
# [1 3] 
# [2 1]] 
関連する問題