如何在 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()。根据您的特定需求和可用库,这些方法提供了不同的优势。通过应用这些技术,您可以有效地从数据中获得见解并高效地进行有意义的分析。