Skip to content

NumPy 简介

什么是 NumPy?

NumPy(Numerical Python)是 Python 科学计算的基础库,它提供了高性能的多维数组对象和处理这些数组的工具。NumPy 是几乎所有 Python 科学计算库的基础,包括 pandas、scikit-learn、matplotlib 等。

为什么选择 NumPy?

1. 高性能

  • NumPy 的核心是用 C 语言编写的,比纯 Python 代码快 10-100 倍
  • 支持向量化操作,避免了 Python 循环的开销
  • 内存使用效率高,数据存储紧凑

2. 功能强大

  • 提供了大量的数学函数
  • 支持广播(broadcasting)机制
  • 丰富的数组操作功能
  • 线性代数、傅里叶变换、随机数生成等高级功能

3. 生态系统

  • Python 科学计算生态系统的基石
  • 与其他库无缝集成
  • 庞大的社区支持

NumPy 的核心概念

ndarray(N维数组)

NumPy 的核心是 ndarray 对象,它是一个快速且灵活的大数据集容器。

python
import numpy as np

# 创建一维数组
arr1d = np.array([1, 2, 3, 4, 5])
print(arr1d)  # [1 2 3 4 5]

# 创建二维数组
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)
# [[1 2 3]
#  [4 5 6]]

数据类型

NumPy 支持多种数据类型,比 Python 内置类型更加丰富和精确。

python
# 整数类型
int_array = np.array([1, 2, 3], dtype=np.int32)

# 浮点类型
float_array = np.array([1.0, 2.0, 3.0], dtype=np.float64)

# 布尔类型
bool_array = np.array([True, False, True], dtype=np.bool_)

向量化操作

NumPy 支持对整个数组进行操作,无需编写循环。

python
# 传统 Python 方式(慢)
result = []
for i in range(len(list1)):
    result.append(list1[i] + list2[i])

# NumPy 方式(快)
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result = arr1 + arr2  # [5 7 9]

NumPy vs Python 列表

特性Python 列表NumPy 数组
数据类型混合类型同质类型
内存使用较高较低
性能较慢较快
功能基础操作丰富的数学函数
维度一维多维

性能对比示例

python
import numpy as np
import time

# 创建大型数据集
size = 1000000
python_list1 = list(range(size))
python_list2 = list(range(size))
numpy_array1 = np.arange(size)
numpy_array2 = np.arange(size)

# Python 列表相加
start_time = time.time()
result_list = [a + b for a, b in zip(python_list1, python_list2)]
list_time = time.time() - start_time

# NumPy 数组相加
start_time = time.time()
result_array = numpy_array1 + numpy_array2
numpy_time = time.time() - start_time

print(f"Python 列表时间: {list_time:.4f} 秒")
print(f"NumPy 数组时间: {numpy_time:.4f} 秒")
print(f"NumPy 比 Python 快 {list_time/numpy_time:.1f} 倍")

NumPy 的应用领域

1. 数据科学

  • 数据清洗和预处理
  • 统计分析
  • 数据可视化的基础

2. 机器学习

  • 特征工程
  • 模型训练的数据准备
  • 算法实现的基础

3. 科学计算

  • 数值模拟
  • 信号处理
  • 图像处理

4. 金融分析

  • 风险建模
  • 投资组合优化
  • 时间序列分析

学习 NumPy 的重要性

  1. 基础技能:NumPy 是 Python 数据科学的基础,掌握它是必要的
  2. 性能提升:学会使用 NumPy 可以显著提高代码性能
  3. 生态系统:理解 NumPy 有助于更好地使用其他科学计算库
  4. 职业发展:NumPy 技能在数据科学、机器学习等领域非常重要

本章小结

  • NumPy 是 Python 科学计算的基础库
  • 提供高性能的多维数组对象 ndarray
  • 支持向量化操作,性能远超 Python 列表
  • 是 Python 科学计算生态系统的核心
  • 广泛应用于数据科学、机器学习、科学计算等领域

下一步

在下一章中,我们将学习如何安装和配置 NumPy 开发环境,为后续的学习做好准备。

练习题

  1. 解释 NumPy 相比 Python 列表的主要优势
  2. 什么是向量化操作?为什么它很重要?
  3. 列举三个使用 NumPy 的应用场景
  4. 尝试创建一个简单的 NumPy 数组并打印其内容

本站内容仅供学习和研究使用。