logo

Python の numpy.unique()

Python の numpy モジュールは、numpy 配列内で一意の要素を検索する関数を提供します。 numpy.unique() 関数は、配列の一意の要素を検索し、これらの一意の要素を並べ替えられた配列として返します。固有の要素とは別に、次のようなオプションの出力もいくつかあります。

  • 出力は、一意の値を与える入力配列のインデックスになります。
  • 出力は、入力配列を再構築する一意の配列のインデックスになります。
  • 出力は、入力配列に各一意の値が入った回数の配列にすることができます。

構文

 numpy.unique(a, return_index=False, return_inverse=False, return_counts=False, axis=None) 

パラメーター

これらは、numpy.mean() 関数の次のパラメータです。

a: 配列のようなもの

このパラメータは、一意の値が必要な要素を含むソース配列を定義します。配列が 1 次元配列でない場合、配列はフラット化されます。

Return_index: bool(オプション)

Javaのwhile条件

このパラメータが True に設定されている場合、関数は入力配列のインデックス (指定されている場合は指定された軸に沿って、またはフラット化された配列内) を返し、その結果一意の配列が返されます。

return_inverse: bool(オプション)

このパラメーターが True に設定されている場合、関数は入力配列のインデックス (指定されている場合は指定された軸に沿って、または平坦化された配列内) も返します。これは入力配列を再構築するために使用できます。

Return_counts: ブール値(オプション)

このパラメーターが True に設定されている場合、関数は入力配列 'a' に各一意の項目が出現した回数を返します。

軸: int または None (オプション)

職員選考委員会の意味

このパラメータは、操作する軸を定義します。このパラメータが設定されていない場合、配列 'a' はフラット化されます。このパラメーターが整数の場合、指定された軸によってインデックス付けされたサブ配列はフラット化され、指定された軸の次元を持つ 1 次元配列の要素として扱われます。軸 'kwarg' が使用されている場合、構造化配列またはオブジェクトを含むオブジェクト配列はサポートされません。

戻り値

この関数は、次の 4 種類の出力を返します。

一意: ndarray

この出力では、ソートされた一意の値を含む ndarray が表示されます。

unique_indices: ndarray (オプション)

この出力では、元の配列内で最初に出現した一意の値のインデックスを含む ndarray が表示されます。この出力は、return_index が True の場合にのみ提供されます。

unique_inverse: ndarray (オプション)

この出力では、一意の配列から元の配列を再構築するためのインデックスを含む ndarray が表示されます。この出力は、return_inverse が True の場合にのみ提供されます。

unique_counts: ndarray (オプション)

この出力では、元の配列内でそれぞれの一意の値が出現した回数を含む ndarray が表示されます。この出力は、return_counts が True の場合にのみ提供されます。

配列リスト

例 1:

 import numpy as np a=np.unique([1,2,3,4,3,6,2,4]) a 

出力:

 array([1, 2, 3, 4, 6]) 

上記のコードでは

  • numpy をエイリアス名 np でインポートしました。
  • 変数「a」を宣言し、np.unique() 関数の戻り値を割り当てました。
  • 関数に要素の数を渡しました。
  • 最後に、「a」の値を出力してみました。

出力には、一意の要素を含む ndarray が表示されています。

例 2:

 a=np.array([[1,2,2,3,9],[1,4,3,5,8]]) a b=np.unique(a) b 

出力:

 array([[1, 2, 2, 3, 9], [1, 4, 3, 5, 8]]) array([1, 2, 3, 4, 5, 8, 9]) 

例 3:

 import numpy as np a = np.array([[1, 1, 0], [1, 1, 0], [2, 3, 4],[5, 9, 8],[2, 3, 4]]) a b=np.unique(a, axis=0) b 

出力:

 array([[1, 1, 0], [1, 1, 0], [2, 3, 4], [5, 9, 8], [2, 3, 4]]) array([[1, 1, 0], [2, 3, 4], [5, 9, 8]]) 

上記のコードでは

  • numpy をエイリアス名 np でインポートしました。
  • 多次元配列「a」を作成しました。
  • 変数「b」を宣言し、np.unique() 関数の戻り値を割り当てました。
  • 関数では多次元配列 'a' と axis を 0 として渡しました。
  • 最後に、「b」の値を出力してみました。

出力では、ソース配列 'a' の一意の行を含む ndarray が示されています。

例 4:

 import numpy as np a = np.array([[1, 1, 0], [1, 1, 0], [2, 2, 4],[5, 5, 8],[2, 2, 4]]) a b=np.unique(a, axis=1) b 

出力:

 array([[1, 1, 0], [1, 1, 0], [2, 2, 4], [5, 5, 8], [2, 2, 4]]) array([[0, 1], [0, 1], [4, 2], [8, 5], [4, 2]]) 

注: 軸を 1 に設定すると、この関数はソース配列から一意の列を返します。

例 5: return_index を使用する

 import numpy as np a = np.array(['d', 'b', 'b', 'z', 'a']) result, indices=np.unique(a,return_index=True) result indices a[indices] 

出力:

 array(['a', 'b', 'd', 'z'], dtype='|S1') array([4, 1, 0, 3], dtype=int64) array(['a', 'b', 'd', 'z'], dtype='|S1') 

上記のコードでは

  • numpy をエイリアス名 np でインポートしました。
  • 配列「a」を作成しました。
  • 変数「result」と「indices」を宣言し、np.unique() 関数の戻り値を割り当てました。
  • 配列 'a' を渡し、関数内で return_index を True に設定しました。
  • 最後に、'result'、'indices'、およびインデックスを示す配列要素の値を出力しようとしました('a [indices]')。

出力では、一意の値を与える元の配列のインデックスを含む ndarray が示されています。

Java配列をスライスする

例 6: return_inverse を使用する

次の方法で一意の値から入力配列を再構築できます。

 import numpy as np a = np.array([1, 2, 6, 4, 5, 3, 2]) result, indices=np.unique(a,return_inverse=True) result indices a[indices] 

出力:

 array([1, 2, 3, 4, 5, 6]) array([0, 1, 5, 3, 4, 2, 1], dtype=int64) array([1, 2, 3, 4, 5, 6, 2])