NumPy 教程


NumPy 是 Python 中广泛使用的一个科学计算库,它致力于处理大型多维数组和矩阵,同时提供强大的数学函数库。

安装

在使用 NumPy 之前,我们需要先安装它。可以使用 pip 命令在终端中安装:

pip install numpy

数组创建与基本操作

NumPy 的核心数据结构是 ndarray,即 n 维数组。创建数组非常简单,可以使用 array() 函数创建一个一维数组,也可以使用 nested list 创建一个多维数组:

import numpy as np

a = np.array([1, 2, 3])  # 一维数组
b = np.array([[1, 2, 3], [4, 5, 6]])  # 二维数组

除此之外,也可以使用 arange() 函数或 linspace() 函数创建一个数列:

c = np.arange(0, 10, 2)  # [0, 2, 4, 6, 8]
d = np.linspace(0, 1, 5)  # [0. , 0.25, 0.5 , 0.75, 1. ]

对于数组的基本操作,NumPy 提供了很多函数和方法,比如数组的形状、维度、元素类型等属性,以及数组相加、相减、相乘等计算操作。

数学计算

NumPy 中的数学计算函数非常丰富,包括三角函数、指数对数函数、统计函数等。这里列举常用的一些:

a = np.sin(np.pi/2)  # 1.0
b = np.exp(1)  # 2.718281828459045
c = np.log(2.718)  # 1.000057737732358
d = np.sum([1, 2, 3])  # 6
e = np.mean([1, 2, 3])  # 2.0
f = np.std([1, 2, 3])  # 0.816496580927726

除此之外,NumPy 还提供了一些常用的线性代数函数,比如矩阵乘积、矩阵求逆、矩阵行列式等。

广播机制

NumPy 中的广播机制可以方便地处理不同形状的数组进行计算,使得较小的数组能够进行计算。广播机制遵循下面的规则:

  1. 如果两个数组的后缘维度(trailing dimension,即后面的维度)相同或其中一个数组的后缘维度为1,则认为它们是广播兼容的。

  2. 如果两个数组的维度不相同,则在较小的数组前面加上若干个长度为1的维度,直到两个数组的形状匹配为止。

举个例子:

a = np.array([1, 2, 3])  # shape=(3,)
b = np.array([[1], [2], [3]])  # shape=(3, 1)

c = a * b  # 等价于 np.array([[1, 2, 3], [2, 4, 6], [3, 6, 9]])

文件操作

NumPy 还提供很多文件操作的函数,比如 savetxt() 和 loadtxt()。savetxt() 函数可以将数组保存到磁盘上的文本文件中,loadtxt() 函数可以从磁盘上的文本文件中读取数组。

a = np.arange(10)
np.savetxt('a.txt', a)

b = np.loadtxt('a.txt')

当然,NumPy 还提供了更强大的文件操作函数 load() 和 save(),可以保存和读取二进制文件。

总结

本篇教程介绍了 NumPy 的基本使用、数组创建与基本操作、数学计算、广播机制、文件操作等功能。这些功能是 NumPy 最常用的功能,可以在科学计算、数据分析等领域方便地应用。