趋近智
虽然NumPy和Pandas等专用库是机器学习 (machine learning)中处理大规模数值数据的主要工具,但Python的内置数据结构,即列表、字典和集合,在机器学习工作流的各个环节仍发挥着重要作用。了解它们的性能特点对于编写高效的辅助代码来说很重要。
Python列表是多功能的有序项目集合。它们使用简单,常作为数据的初始容器,之后可能会转换为更专门的结构。
机器学习 (machine learning)中的常见用途:
性能考量:
my_list[i])非常快,花费常数时间,。my_list.append(x))通常是高效的。它花费摊销常数时间,。摊销意味着虽然偶尔追加可能需要更长时间(由于内部重新分配大小),但多次追加操作的平均时间是常数。x in my_list)或找到其索引(my_list.index(x))需要扫描列表,平均花费线性时间,。对于许多涉及大型数据集的机器学习任务,列表中插入、删除和搜索操作的开销使得它们不如为这些操作优化的结构适用,尤其是在性能要求高时。然而,对于较小集合或主要需要追加或索引访问的场景,列表是完全足够的。
字典存储键值对,根据键提供快速查找。它们内部使用哈希表实现。
机器学习 (machine learning)中的常见用途:
{feature_index: value})。{'word1': 10, 'word2': 5})。性能考量:
当您需要基于标识符或键进行快速查找时,字典是非常有价值的,这在机器学习流程中处理命名特征或映射操作时很常见。
集合类似于字典,但只存储键(唯一元素),不存储关联的值。它们通常也使用哈希表实现。
机器学习 (machine learning)中的常见用途:
性能考量:
x in my_set)提供平均情况下的常数时间,。当唯一性和快速成员检查是主要要求时,集合表现出色。它们在大集合中检查成员资格时通常比列表更节省内存,因为它们避免重复并利用哈希。
我们来通过查找性能的差异进行说明。检查集合中是否存在某个元素(element in collection)是一种常见操作。
检查成员资格(
element in collection)的性能比较。请注意Y轴采用对数刻度。列表查找时间随大小线性增加(),而集合和字典键查找平均而言保持大致不变()。实际时间取决于硬件和具体数据。
如图所示,对于搜索或成员测试,列表所需的时间随元素数量直接增长。相比之下,集合和字典平均而言无论大小如何,都保持快速、接近常数时间的查找。在机器学习 (machine learning)中处理大型词汇表 (vocabulary)、特征集或数据集时,这种差异变得非常明显。
虽然Python的内置结构便于使用,但必须考虑它们的性能特点。对于大型数组上的数值操作,我们通常转向NumPy;对于灵活的表格数据处理,Pandas是标准工具。接下来我们将讨论这些。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•