📅  最后修改于: 2023-12-03 15:19:19.219000             🧑  作者: Mango
如果您需要在一个二维列表中查找每一列中最常见的元素,Python提供了许多简单和高效的方法来实现此目的。
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库中的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库提供了一个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中查找并返回二维列表中每一列中的最常见元素。