在机器学习的广阔世界中,NumPy(Numerical Python)扮演着不可或缺的角色。它是一个强大的Python库,专门用于科学计算,提供了高性能的多维数组对象和用于处理这些数组的工具。对于任何想要涉足机器学习、数据科学或深度学习领域的学习者来说,熟练掌握NumPy是第一步,也是至关重要的一步。它高效处理大规模数值数据的能力,为诸如Pandas、Scikit-learn和TensorFlow等更高级的库奠定了坚实的基础。

NumPy环境搭建与核心概念
开始使用NumPy的第一步是确保它已正确安装在你的Python环境中。最便捷的方式是通过pip包管理器进行安装。
pip install numpy
安装完成后,你便可以导入NumPy开始你的科学计算之旅。通常,我们使用np作为NumPy的别名,这是一种广泛遵循的约定。
import numpy as np
NumPy的核心是ndarray(N-dimensional array)对象,即N维数组。与Python原生的列表相比,NumPy数组在存储和操作数据方面具有显著优势:
- 性能卓越:NumPy数组在元素级计算上比Python列表快得多。
- 功能丰富:内置了大量高效的数学函数。
- 广播机制:使得不同形状的数组之间的算术运算成为可能。
创建与操作NumPy数组
创建NumPy数组有多种方式,你可以从Python列表转换,也可以使用NumPy内置的函数。
- 从列表创建:
arr = np.array([1, 2, 3, 4, 5]) - 创建特殊数组:
- 零数组:
np.zeros((3, 4)) - 单位数组:
np.ones((2, 2)) - 范围数组:
np.arange(0, 10, 2)// 生成 [0, 2, 4, 6, 8] - 等差数组:
np.linspace(0, 1, 5)// 生成 [0., 0.25, 0.5, 0.75, 1.]
- 零数组:
数组的维度、形状和数据类型是其基本属性,可以通过.ndim, .shape, .dtype来获取。
NumPy数组索引与切片技巧
访问和修改数组中的元素是数据处理中的常见操作。NumPy提供了强大而灵活的索引和切片功能。
- 基本索引:与Python列表类似,使用方括号
[]。 - 布尔索引:通过布尔数组来过滤数据,非常实用。
- 花式索引:使用整数数组进行索引,可以获取任意位置的元素。
例如,从一个数组中找出所有大于5的元素:
data = np.array([1, 8, 3, 10, 5])
result = data[data > 5] // 结果为 [8, 10]
NumPy数组的变形与组合
在实际数据处理中,我们经常需要改变数组的形状或者将多个数组合并。NumPy提供了丰富的函数来完成这些任务。
| 操作类型 | 函数 | 描述 |
|---|---|---|
| 改变形状 | reshape |
改变数组维度,不改变数据。 |
| 展平数组 | flatten, ravel |
将多维数组转换为一维。 |
| 垂直堆叠 | vstack |
按行方向堆叠数组。 |
| 水平堆叠 | hstack |
按列方向堆叠数组。 |
NumPy通用函数与数学运算
NumPy的通用函数(ufunc)是其高效计算的秘密武器。它们是用于在ndarray上进行元素级运算的函数。
- 算术运算:
np.add,np.subtract,np.multiply,np.divide - 三角函数:
np.sin,np.cos,np.tan - 指数与对数:
np.exp,np.log,np.log10 - 聚合函数:
np.sum,np.mean,np.std,np.min,np.max
这些函数不仅语法简洁,而且底层由C语言实现,执行速度极快。
数据处理实战:从清洗到分析
掌握了NumPy的基础知识后,让我们通过一个实战案例来巩固所学。假设我们有一组模拟的销售数据,需要进行清洗和分析。
我们创建一个包含一些无效值(如NaN)的模拟数据集。
// 模拟销售数据:产品ID,销售额,成本
sales_data = np.array([
[1, 100.5, 60.2],
[2, 250.0, np.nan], // 成本缺失
[3, np.nan, 110.0], // 销售额缺失
[4, 180.3, 95.7],
[5, 300.0, 210.0]
])
数据清洗的第一步是处理缺失值。我们可以使用np.isnan来检测缺失值,并用平均值或中位数来填充。
// 计算销售额和成本的均值(忽略NaN)
sales_mean = np.nanmean(sales_data[:, 1])
cost_mean = np.nanmean(sales_data[:, 2])
// 用均值填充缺失值
sales_data[np.isnan(sales_data[:, 1]), 1] = sales_mean
sales_data[np.isnan(sales_data[:, 2]), 2] = cost_mean
实战:数据筛选与业务指标计算
数据清洗完成后,我们可以进行业务分析了。例如,我们想找出所有利润率高于30%的产品。
// 计算利润和利润率
revenue = sales_data[:, 1]
cost = sales_data[:, 2]
profit = revenue
cost
profit_margin = profit / revenue
// 筛选高利润率产品
high_margin_products = sales_data[profit_margin > 0.3]
print("高利润率产品:")
print(high_margin_products)
我们还可以计算一些关键的统计指标来洞察业务状况:
- 总销售额:
np.sum(revenue) - 平均利润率:
np.mean(profit_margin) - 最畅销产品的销售额:
np.max(revenue)
迈向更广阔的机器学习世界
通过本教程,你已经掌握了NumPy的核心概念和基本数据处理技能。你学会了如何创建和操作数组,如何进行索引和切片,以及如何运用通用函数进行高效的数学运算。更重要的是,你体验了如何将这些知识应用于一个简化的数据分析实战中。
NumPy是机器学习和数据科学大厦的基石。接下来,你可以在此基础上学习Pandas进行更复杂的数据操作,使用Scikit-learn构建你的第一个机器学习模型,或者深入Matplotlib和Seaborn进行数据可视化。记住,熟练运用NumPy将使你在后续的学习中事半功倍。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/133618.html