热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python技巧:将相同元素聚合至矩阵

本文探讨了如何在Python中将具有相同值的元素分组到矩阵中,这是一个在数据分析和处理中常见的需求。
Python技巧:将相同元素聚合至矩阵

原文链接: https://www.geeksforgeeks.org/python-group-similar-elements-into-matrix/

在Python编程中,有时需要将列表中的重复元素聚合成子列表,形成一个矩阵结构。这一操作在数据预处理阶段尤为重要,能够帮助我们更好地理解和分析数据集。下面介绍两种实现该功能的方法。

示例1:
输入: test_list = [1, 3, 4, 4, 2, 3]
输出: [[1], [2], [3, 3], [4, 4]]

示例2:
输入: test_list = [1, 3, 4, 2]
输出: [[1], [2], [3], [4]]

方法一:利用列表推导式与groupby()函数
此方法结合了列表推导式和itertools模块中的groupby()函数来解决问题。首先,通过sorted()函数对原始列表进行排序,确保相同的元素相邻,然后使用groupby()按值分组,最后通过列表推导式生成结果矩阵。

# Python3代码示例
# 使用列表推导式和groupby()将相同元素聚合至矩阵
from itertools import groupby
# 初始化列表
test_list = [1, 3, 5, 1, 3, 2, 5, 4, 2]
# 打印原始列表
print("原始列表 : " + str(test_list))
# 聚合相同元素至矩阵
# 使用列表推导式和groupby()
res = [list(val) for key, val in groupby(sorted(test_list))]
# 打印结果
print("聚合后的矩阵 : " + str(res))

输出:

原始列表 : [1, 3, 5, 1, 3, 2, 5, 4, 2]
聚合后的矩阵 : [[1, 1], [2, 2], [3, 3], [4], [5, 5]]

方法二:使用列表推导式与Counter()
另一种实现方式是使用collections模块中的Counter()类来统计每个元素出现的次数,再通过列表推导式生成相应的子列表。这种方法不仅简洁而且效率高。

# Python3代码示例
# 使用列表推导式和Counter()将相同元素聚合至矩阵
from collections import Counter
# 初始化列表
test_list = [1, 3, 5, 1, 3, 2, 5, 4, 2]
# 打印原始列表
print("原始列表 : " + str(test_list))
# 聚合相同元素至矩阵
# 使用列表推导式和Counter()
temp = Counter(test_list)
res = [[key] * val for key, val in temp.items()]
# 打印结果
print("聚合后的矩阵 : " + str(res))

输出:

原始列表 : [1, 3, 5, 1, 3, 2, 5, 4, 2]
聚合后的矩阵 : [[1, 1], [2, 2], [3, 3], [4], [5, 5]]

推荐阅读
author-avatar
法华大道暴力喵一只
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有