Python を使用してリスト要素の頻度を取得する

Hafiz Muhammad Zohaib 2023年6月21日
  1. collections モジュールを使用して Python を使用してリスト要素の頻度を取得する
  2. Python を使用してリスト要素の頻度を取得するための手動コード
  3. NumPy を使用して Python を使用してリスト要素の頻度を取得する
Python を使用してリスト要素の頻度を取得する

この短い記事では、Python を使用してすべてのリスト要素の合計出現回数をカウントする方法について説明します。 また、これを行うことの長所と短所も見ていきます。

Python は非常に用途の広い言語であり、開発者はその実装ではなく重要な問題に集中できます。 Python でのコーディングは、C や C++ などの他の現代的な言語よりも比較的簡単です。

アイテムの頻度の問題は、Python を使用して複数の方法で解決できます。 まず、問題を正式に紹介しましょう。

List A= [2, 4, 7, 8, 12, 4, 6, 7, 8, 91, 8] のような数字の順序付けられていないリストを考えてみましょう。リスト内の各数字の頻度を取得したいとします。 リストに数字が何回表示されるかを確認します。

答えは次のようになります: {'2': 1, '4': 2, '6': 1, '7': 2, '8': 3, '12': 1, '91': 1 }. 21 回存在し、42 回存在し、61 の頻度で存在することを意味します。

collections モジュールを使用して Python を使用してリスト要素の頻度を取得する

このメソッドでは、collections モジュールを使用します。 このモジュールのカウンター関数は、数値がリストに表示される回数を追跡するコンテナーを返します。

以下のコードを参照してください。

import collections

a = [2, 4, 7, 8, 12, 4, 6, 7, 8, 91, 8]
counter = collections.Counter(a)
print(counter)
print(type(counter))

上記のコードは、次の出力を生成します。

Counter({8: 3, 4: 2, 7: 2, 2: 1, 12: 1, 6: 1, 91: 1})
<class 'collections.Counter'>

次のコードを使用して、コンテナーから一意の番号を取得できます。

counter.keys()

上記のコード行により、次の結果が得られます。

dict_keys([2, 4, 7, 8, 12, 6, 91])

同様に、各一意の番号の数を取得するには、次のコードを実行できます。

counter.values()

出力は次のとおりです。

dict_values([1, 2, 2, 3, 1, 1, 1])

Python を使用してリスト要素の頻度を取得するための手動コード

方法 1 では、カウントに collections モジュールを使用しました。 ただし、この方法では、目的の結果を得るために手動でコーディングする必要があります。

このアプローチのコードは次のとおりです。

List_numbers = [2, 4, 7, 8, 12, 4, 6, 7, 8, 91, 8]
dict_count = {}
for i, number in enumerate(List_numbers):
    if number in dict_count.keys():
        dict_count[number] = dict_count[number] + 1
    else:
        dict_count[number] = 1
print(dict_count)

これは、ディクショナリ型を使用して各数値に対するカウントを格納する単純なコードです。 ディクショナリのキーは常に一意のままです。つまり、これらを複製することはできません。

上記のコードは、次の出力を生成します。

{2: 1, 4: 2, 7: 2, 8: 3, 12: 1, 6: 1, 91: 1}

このコードの複雑さは O(n) です。

NumPy を使用して Python を使用してリスト要素の頻度を取得する

numpy モジュールでは、unique() 関数により、リストの各要素の頻度を柔軟に見つけることができます。

import numpy as np

List_numbers = [2, 4, 7, 8, 12, 4, 6, 7, 8, 91, 8]
print(np.unique(List_numbers, return_counts=True))

np.unique() 関数は、配列の一意の要素を見つけるために使用されます。 配列のソートされた一意の要素を返します。

オプションのパラメーター return_counts を使用すると、それぞれの要素数を取得できます。

上記のコードは次を出力します。

(array([ 2,  4,  6,  7,  8, 12, 91]), array([1, 2, 1, 2, 3, 1, 1]))

カウントを取得するには、次を使用できます。

np.unique(List_numbers, return_counts=True)[1]

この記事では、Python でリスト要素の数を取得するさまざまな方法を提案しました。 リソースと時間の複雑さに応じて、説明した方法から選択できます。

関連記事 - Python List