数据科学家必须了解的 5 个 Python 概念

在本文中,我们将深入探讨五个必须了解的 Python 概念,这些概念将帮助您从编写笨重、缓慢的意大利面条式代码过渡到构建快如闪电、生产级且功能精美的数据管道。

来源:KDnuggets

简介

你不应该只是“因为其他人都这样做!”而使用 Python 进行数据科学。 Python 在数据领域的统治地位并非偶然。它是一种建立在高度表达性、可读语法之上的语言,抽象了低级内存管理。然而,同样的高级抽象是有代价的:标准 Python 执行是动态类型化和解释的,这会使原始迭代极其缓慢。

要编写高性能数据系统,数据科学家必须从标准过程编码模式转向专门的、矢量化的和内存感知的方法。在本文中,我们将深入探讨五个必须了解的 Python 概念,这些概念将帮助您从编写笨重、缓慢的意大利面条式代码过渡到构建快如闪电、生产级且功能精美的数据管道。

1. NumPy 向量化

标准 Python 循环很慢。由于 Python 是一种解释性语言,因此 for 循环的每次迭代都会产生大量开销:类型检查、动态方法查找和引用计数。当您处理数百万个数据点时,这些微小的开销成本会复合成多秒的瓶颈。

解决方案是 NumPy 向量化。 NumPy 不是按顺序处理 Python 字节码中的元素,而是将循环卸载到高度优化的预编译 C 扩展。这些操作同时作用于整个数组,在机器级别执行连续的数组块,通常使用单指令、多数据 (SIMD) 指令。

笨拙的方式

假设我们有一个代表原始传感器读数的一百万个浮点值的列表,我们需要将每个读数缩放 1.5 并应用校准常数 10.0。使用迭代 Python 循环:

输出:

循环执行耗时:0.378866 秒

矢量化方式

这是优雅的矢量化替代方案。我们将数据加载到连续的 NumPy 数组中,并直接在数组对象上执行算术:

2. 广播:维度不匹配的数学规则

总结