手记

从零开始学:Python numpy 基础教程与实际应用

概述

Numpy,作为Python科学计算领域的核心库,显著提升了大型多维数组和矩阵处理的性能与效率。其优势在于提供高性能、低内存消耗的数组结构,以及向量化操作,简化了数值计算,为科学计算、数据处理和机器学习项目奠定了基础。从数组创建、维度与形状理解,到元素访问、切片,以及数学函数应用,Numpy 支持数据的高效操作。此外,它还具备强大的矩阵运算能力与完整的数学函数集,以及数据预处理和统计分析功能,使得Numpy成为数据科学不可或缺的工具。

引入 numpy

在 Python 进行科学计算、数据处理和机器学习项目时,numpy(数值 Python)库是必不可少的。它提供了高效地处理大型多维数组和矩阵的能力,相比于 Python 的基础数据结构如列表,numpy 数组能够提供更快的性能和更低的内存消耗。numpy 的核心优点在于它简化了数值计算操作,如数组运算、数学函数应用等,使得这些操作的执行既快速又简洁。

numpy 与 Python 数值计算

相较于 Python 的原生数据结构,numpy 数组具有以下优势:

  1. 高性能:numpy 数组通过底层 C 语言实现,能显著提升计算速度。
  2. 内存效率:numpy 数组在内存使用上比 Python 列表更高效。
  3. 向量化操作:numpy 支持对整个数组执行操作,避免了 Python 的循环执行,提高代码可读性和效率。
# 示例代码:
import numpy as np

# 创建一个 numpy 数组
arr = np.array([1, 2, 3, 4, 5])
print("原始数组:", arr)

# 使用 numpy 进行操作,比如加法
result = arr + 10
print("加法结果:", result)

numpy 基础概念

numpy 数组的创建

numpy 提供了许多方法来创建数组。从简单的数组到复杂的数据集合,都有对应的函数。

# 示例代码:
# 使用 np.array 创建数组
simple_arr = np.array([1, 2, 3, 4, 5])
print("简单数组:", simple_arr)

# 通过列表创建多维数组
multi_dim_arr = np.array([[1, 2, 3], [4, 5, 6]])
print("多维数组:", multi_dim_arr)

数组维度与形状的理解

数组的维度决定了数组的结构,形状则定义了数组内元素的具体排列方式。

# 查看数组维度和形状
print("简单数组维度:", simple_arr.ndim)
print("简单数组形状:", simple_arr.shape)

print("多维数组维度:", multi_dim_arr.ndim)
print("多维数组形状:", multi_dim_arr.shape)

numpy 数组操作

数组元素访问与切片

访问 numpy 数组中的元素非常直观,通过索引即可。

# 访问元素
element = simple_arr[0]
print("访问元素:", element)

# 切片操作
slice_arr = simple_arr[1:3]
print("切片数组:", slice_arr)

数组排序与查找

numpy 提供了对数组进行排序和查找的函数。

# 排序
sorted_arr = np.sort(simple_arr)
print("排序数组:", sorted_arr)

# 查找最大值
max_element = np.max(simple_arr)
print("最大元素:", max_element)

数组的合并与分解

合并和分解数组是 numpy 中常见操作,可用于数据聚合或分割。

# 合并数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
combined = np.concatenate((array1, array2))
print("合并数组:", combined)

# 分解数组
decomposed = np.array([1, 2, 3, 4, 5, 6])
decomp1, decomp2 = np.split(decomposed, [3])
print("分解后的数组:", decomp1, decomp2)

numpy 数学函数

常用数学函数介绍

numpy 提供了丰富的数学函数,涵盖基本运算、三角函数、指数、对数等。

# 示例代码:
import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 指数与对数
exp_arr = np.exp(arr)
log_arr = np.log(arr)

print("指数结果:", exp_arr)
print("对数结果:", log_arr)

# 三角函数
sin_arr = np.sin(arr)
cos_arr = np.cos(arr)

print("正弦结果:", sin_arr)
print("余弦结果:", cos_arr)

矩阵运算与线性代数应用

numpy 支持矩阵运算和线性代数操作,如矩阵乘法、求逆、特征值等。

# 示例代码:
import numpy as np

matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])

# 矩阵乘法
product = np.dot(matrix1, matrix2)
print("矩阵乘法结果:\n", product)

# 求逆
inverse = np.linalg.inv(matrix1)
print("矩阵逆:\n", inverse)

# 特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(matrix1)
print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)

numpy 数据处理

数据清洗与预处理

在数据科学项目中,数据预处理是关键步骤,包括缺失值处理、异常值检测、数据标准化等。

import numpy as np

# 示例数据集
data = np.array([[np.nan, 2, 3], [4, 5, 6], [7, 8, 9]])

# 用平均值填充缺失值
filled_data = np.nanmean(data, axis=0)
filled_data = np.where(np.isnan(data), filled_data, data)
print("填充缺失值后的数据:\n", filled_data)

# 数据标准化
mean = np.mean(data)
std = np.std(data)
normalized_data = (data - mean) / std
print("标准化后的数据:\n", normalized_data)

数据统计与分析

numpy 提供了强大的统计分析功能,包括描述性统计、相关性分析等。

# 示例数据
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# 描述性统计
mean = np.mean(data)
median = np.median(data)
std_dev = np.std(data)
print("均值:", mean)
print("中位数:", median)
print("标准差:", std_dev)

# 相关性分析
correlation_matrix = np.corrcoef(data)
print("相关性矩阵:\n", correlation_matrix)

numpy 实践应用

实战项目:使用 numpy 进行数据可视化与预测分析

实现步骤:

  1. 数据加载与预处理:使用 numpy 加载数据,并进行必要的清洗和预处理。
import numpy as np
import pandas as pd

# 加载数据
data = pd.read_csv('data.csv')
data = data.dropna()  # 去除缺失值
data['date'] = pd.to_datetime(data['date'])  # 将日期列转换为 datetime 类型
  1. 数据可视化:使用 numpy 和 matplotlib 进行基本的数据可视化。
import matplotlib.pyplot as plt

# 时间序列可视化
date = data['date']
values = data['value']
plt.figure(figsize=(14, 7))
plt.plot(date, values)
plt.title('Time Series Visualization')
plt.xlabel('Date')
plt.ylabel('Value')
plt.show()
  1. 预测分析:实现一个简单的线性回归模型,使用 numpy 和 statsmodels 进行模型训练和预测。
import statsmodels.api as sm

# 定义特征和目标变量
X = data['date'].apply(lambda x: (x - data['date'].min()) / (data['date'].max() - data['date'].min()))
y = data['value']

# 添加常数项
X = sm.add_constant(X)

# 拟合模型
model = sm.OLS(y, X).fit()
predictions = model.predict(X)

# 计算预测误差
error = abs(y - predictions)

# 输出模型参数和评估指标
print(model.summary())

通过这个实战项目,我们不仅学习了 numpy 在数据处理、数学运算和数据可视化方面的应用,还体验了如何将其与 pandas 和其他库结合进行数据科学建模。随着项目实践的深入,你将逐渐掌握 numpy 在复杂数据分析任务中的强大功能。

0人推荐
随时随地看视频
慕课网APP