如何在 NumPy 陣列中計算唯一值的頻率?


分析 NumPy 陣列中唯一值的頻率是資料分析中的一項常見任務。它提供了對元素分佈和出現情況的有價值的見解,從而能夠有效地探索和預處理資料。在本文中,我們將探討各種方法來計算 NumPy 陣列中唯一值的頻率。透過利用內建的 NumPy 函式和外部庫(如 pandas 和 collections),我們將指導您逐步實現這些技術。透過本綜合指南,您將獲得準確分析和提取 NumPy 陣列中有意義的資訊所需的知識。

方法 1:使用 np.unique() 函式

NumPy 提供了 np.unique() 函式,該函式返回陣列的排序唯一元素。透過指定 return_counts=True 引數,它還會返回每個唯一元素的計數。讓我們看看如何使用此函式來計算 NumPy 陣列中唯一值的頻率

import numpy as np

# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])

# Get the unique values and their counts
unique_values, counts = np.unique(arr, return_counts=True)

# Print the results
for value, count in zip(unique_values, counts):
    print(f"{value} occurs {count} times")

輸出

1 occurs 2 times
2 occurs 2 times
3 occurs 2 times
4 occurs 4 times

透過使用 np.unique() 函式,我們獲得了兩個陣列:unique_values 包含唯一元素,counts 包含相應的頻率。然後,我們可以使用 zip() 函式同時遍歷這些陣列並列印結果。

方法 2:使用 collections.Counter() 函式

計算 NumPy 陣列中唯一值頻率的另一種方法涉及使用 collections.Counter() 函式。此函式是 Python 標準庫的一部分,並提供了一種有效的方法來計算集合中元素的出現次數。以下是如何使用此函式的示例

import numpy as np
from collections import Counter

# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])

# Count the frequency of unique values
counts = Counter(arr)

# Print the results
for value, count in counts.items():
    print(f"{value} occurs {count} times")

輸出

1 occurs 2 times
2 occurs 2 times
3 occurs 2 times
4 occurs 4 times

當應用 Counter(arr) 時,NumPy 陣列被轉換為類似字典的物件,其中鍵表示唯一值,值表示相應的頻率。然後,在遍歷 Counter 物件的內容後,可以列印結果。

方法 3:使用 np.bincount() 函式

我們可以使用 np.bincount() 函式來計算非負整數 NumPy 陣列中不同值的頻率。此函式建立一個新陣列並計算原始陣列中每個非負整數的例項。此新陣列中的索引代表不同的值,並且伴隨的項表示其頻率。以下是如何應用此策略的說明

import numpy as np

# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])

# Get the frequency of unique values
counts = np.bincount(arr)

# Print the results
for value, count in enumerate(counts):
    if count > 0:
        print(f"{value} occurs {count} times")

輸出

1 occurs 2 times
2 occurs 2 times
3 occurs 2 times
4 occurs 4 times

在此方法中,我們將 np.bincount() 函式應用於 NumPy 陣列。結果陣列 counts 包含陣列中存在的每個非負整數的頻率。然後,我們可以使用 enumerate() 函式遍歷 counts 陣列的索引和相應元素,並列印計數大於零的值。

方法 4:使用 pandas.value_counts() 函式

如果您已安裝 pandas 庫,則可以使用其 value_counts() 函式來計算 NumPy 陣列中唯一值的頻率。此函式返回一個 Series 物件,其中包含唯一值作為索引,以及它們相應的頻率作為值。以下是一個示例

import numpy as np
import pandas as pd

# Create a NumPy array
arr = np.array([1, 2, 3, 2, 4, 1, 3, 4, 4, 4])

# Convert the array to Series
series = pd.Series(arr)

# Get the frequency of unique values
counts = series.value_counts()

# Print the results
for value, count in counts.items():
    print(f"{value} occurs {count} times")

輸出

4 occurs 4 times
1 occurs 2 times
3 occurs 2 times
2 occurs 2 times

透過將 NumPy 陣列轉換為 pandas Series,我們可以使用 value_counts() 函式建立一個包含唯一值及其相應頻率的 Series 物件。在遍歷 Series 物件的專案後,可以列印結果。

結論

在本文中,我們介紹了各種計算 NumPy 陣列中唯一值頻率的方法,例如 np.unique()、collections.Counter()、np.bincount() 和 pandas.value_counts()。根據您的特定需求和可用庫,這些方法提供了不同的優勢。透過應用這些技術,您可以有效地從資料中獲得見解並高效地進行有意義的分析。

更新於: 2023年7月24日

10K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.