numpy 是 Python 中的科学计算库,提供了高效、灵活的多维数组对象和一系列数学函数。在数据科学、机器学习以及许多其他领域,numpy 都是不可或缺的工具。本教程将引导你从零基础开始,逐步掌握 numpy 的核心功能,包括数组操作、矩阵运算以及高效的数据处理,最后通过实际案例加深理解。
1. numpy 基础介绍安装与配置
首先,确保你的 Python 环境中已安装 numpy。在命令行中运行以下命令即可安装 numpy:
pip install numpy
与 Python 其他库的关系
numpy 数组提供了比 Python 列表更高效的数据结构,适用于大多数计算密集型应用。与 pandas、matplotlib 等库集成时,numpy 数组充当数据的主要容器。
示例代码
import numpy as np
# 创建一个简单的 numpy 数组
arr = np.array([1, 2, 3, 4, 5])
print("创建的数组:", arr)
# 查看数组的形状
print("形状:", arr.shape)
# 访问数组中的元素
print("访问第一个元素:", arr[0])
# 切片操作
print("切片操作:", arr[1:4])
# 使用 numpy 的数学函数
print("数组的平方:", np.square(arr))
2. 多维数组的创建与操作
在 numpy 中,多维数组是通过将数据组织成矩阵或更高维度的结构来实现的。
示例代码
# 创建一个二维数组
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:", matrix)
# 转置操作
print("转置后的数组:", matrix.T)
# 创建一个三维数组
tensor = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print("三维数组:", tensor)
# 获取特定维度的形状
print("三维数组的形状:", tensor.shape)
3. 矩阵运算
numpy 提供了高效的矩阵运算功能,包括加法、减法、乘法、转置和求逆等。
示例代码
# 创建两个矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
# 矩阵加法
print("矩阵加法:", np.add(A, B))
# 矩阵乘法
print("矩阵乘法:", np.dot(A, B))
# 矩阵转置
print("矩阵 A 的转置:", A.T)
# 矩阵求逆
try:
print("矩阵 A 的逆:", np.linalg.inv(A))
except np.linalg.LinAlgError:
print("矩阵 A 不可逆")
4. 数据处理与操作
数据清洗、重塑和排序是数据分析的核心步骤,numpy 提供了高效的方法来执行这些操作。
示例代码
# 创建一个一维数组
data = np.array([3, 1, 2, 5, 4])
# 数据排序
sorted_data = np.sort(data)
print("排序后的数组:", sorted_data)
# 数据清洗:删除重复元素
unique_data = np.unique(data)
print("唯一值:", unique_data)
# 数组的重塑
reshaped_data = data.reshape(2, 2)
print("重塑后的数组:", reshaped_data)
# 数据重塑并排序
sorted_reshaped_data = np.sort(reshaped_data, axis=None)
print("按元素排序后的数组:", sorted_reshaped_data)
5. 高效数据查找与排序
numpy 提供了高效的查找和排序功能,对数据处理非常有用。
示例代码
# 查找数组中的最大值和最小值
maximum = np.max(data)
minimum = np.min(data)
print("最大值:", maximum, "最小值:", minimum)
# 查找特定值的索引
index = np.where(data == 3)
print("索引:", index)
# 使用布尔索引进行数据过滤
filtered_data = data[data > 2]
print("大于 2 的元素:", filtered_data)
# 对数组进行升序排序
sorted_data = np.sort(data)
print("升序排序后的数组:", sorted_data)
# 对数组进行降序排序
sorted_data_desc = np.sort(data)[::-1]
print("降序排序后的数组:", sorted_data_desc)
6. 案例实战
示例代码
假设我们有一个销售数据集,包含商品的销售数量、单价和销售日期。
# 样本销售数据集
sales_data = np.array([
[100, 15.99, "2023-01-01"],
[200, 19.99, "2023-01-02"],
[150, 24.99, "2023-01-03"],
[300, 19.99, "2023-01-04"],
[250, 15.99, "2023-01-05"]
])
# 分割数据
quantities = sales_data[:, 0].astype(int)
prices = sales_data[:, 1].astype(float)
dates = sales_data[:, 2]
# 计算总销售额
total_sales = np.sum(quantities * prices)
print("总销售额:", total_sales)
# 按日期排序数据
sorted_sales = sales_data[np.argsort(dates)]
print("按日期排序的数据:", sorted_sales)
# 使用布尔索引筛选特定价格的商品
filtered_sales = sales_data[prices > 18.0]
print("价格高于 18 美元的商品:", filtered_sales)
通过上述教程和示例代码,你应已掌握了 numpy 的基础知识和实用技能,能够运用 numpy 进行高效的数据处理和分析。推荐在学习过程中,实践上述代码并尝试自己生成数据集,以加深对 numpy 的理解。