📌  相关文章
📜  Python|在二维列表的每一列中查找最常见的元素(1)

📅  最后修改于: 2023-12-03 15:19:19.219000             🧑  作者: Mango

Python | 在二维列表的每一列中查找最常见的元素

如果您需要在一个二维列表中查找每一列中最常见的元素,Python提供了许多简单和高效的方法来实现此目的。

方法一:使用collections模块中的Counter

Counter对象可以对列表中的元素进行频率统计,并返回一个字典,其中元素是键,频率是值。

from collections import Counter

# 一个包含多个列表的二维列表
matrix = [[3, 4, 5, 5, 6], [2, 2, 5, 7, 8], [3, 5, 5, 5, 9]]

# 使用Counter统计每一列中的元素
counts = [Counter(col) for col in zip(*matrix)]

# 获取每一列中的最常见元素
most_common = [count.most_common(1)[0][0] for count in counts]

print(most_common)
# 输出: [3, 5, 5, 5, 9]

在这个例子中,使用zip()函数将矩阵翻转,并且使用Counter计算每一列中每个元素出现的次数。最后,使用most_common()函数获取每一列中的最常见元素。

方法二:使用numpy库

使用numpy库中的unique()和argmax()函数,您可以查找每一列中最常见的元素。

import numpy as np

# 一个包含多个列表的二维列表
matrix = [[3, 4, 5, 5, 6], [2, 2, 5, 7, 8], [3, 5, 5, 5, 9]]

# 将矩阵转换为numpy数组
array = np.array(matrix)

# 使用argmax()函数查找每一列中出现次数最多的元素
most_common = [np.unique(array[:, i])[np.argmax(np.unique(array[:, i], return_counts=True)[1])] for i in range(array.shape[1])]

print(most_common)
# 输出: [3, 5, 5, 5, 9]
方法三:使用pandas库

pandas库提供了一个DataFrame数据结构,可以方便地处理二维数据。使用pandas,您可以很容易地计算每一列中的每个元素的频率,并获取每一列中的最常见元素。

import pandas as pd

# 一个包含多个列表的二维列表
matrix = [[3, 4, 5, 5, 6], [2, 2, 5, 7, 8], [3, 5, 5, 5, 9]]

# 将矩阵转换为DataFrame
df = pd.DataFrame(matrix)

# 使用value_counts()函数获取每一列中每个元素出现的次数
counts = df.apply(pd.value_counts)

# 获取每一列中的最常见元素
most_common = [counts[i].idxmax() for i in range(counts.shape[1])]

print(most_common)
# 输出: [3, 5, 5, 5, 9]

在这个例子中,使用apply()函数将value_counts()应用于每一列,并使用idxmax()函数获取每一列中的最常见元素。

无论您选择哪种方法,都可以很容易地在Python中查找并返回二维列表中每一列中的最常见元素。