NumPy完整指南(上篇):掌握数组、矩阵与高效计算核心技巧
NumPy 是 Python 生态系统中用于科学计算的基础库之一,它提供了强大的数组对象、高效的数值计算能力以及许多用于数组和矩阵操作的实用函数。在本指南上篇中,我们将介绍 NumPy 的核心功能,帮助你掌握数组和矩阵的基本概念与操作。
1. NumPy 简介
NumPy,全称 Numerical Python,是一个开源的数学运算库。它提供了一个高性能的多维数组对象,并附带了大量的数学函数。NumPy 是科学计算、数据分析和机器学习领域的基础,这些领域的许多其他库(如 SciPy、Pandas、TensorFlow)都依赖于 NumPy。
2. 安装 NumPy
如果你还没有安装 NumPy,可以使用以下命令通过 pip 安装:
pip install numpy
3. NumPy 数组基础
创建数组
NumPy 中的核心对象是 ndarray
,它是一个多维数组。你可以通过多种方式创建数组:
从列表或元组创建:
import numpy as np
array_from_list = np.array([1, 2, 3, 4])
array_from_tuple = np.array((5, 6, 7, 8))
使用 NumPy 函数创建:
zeros_array = np.zeros((2, 3)) # 创建一个全零数组
ones_array = np.ones((2, 3)) # 创建一个全一数组
arange_array = np.arange(10) # 创建一个从 0 到 9 的数组
linspace_array = np.linspace(0, 1, 5) # 创建一个从 0 到 1 的线性空间数组,共 5 个元素
数组属性
一旦你创建了数组,你可以通过以下属性来了解数组的信息:
ndarray.ndim
:数组的维度ndarray.shape
:数组的形状(每个维度上的大小)ndarray.size
:数组中元素的总数ndarray.dtype
:数组中元素的数据类型
数组索引与切片
与 Python 的列表类似,NumPy 数组支持索引和切片:
array = np.array([[1, 2, 3], [4, 5, 6]])
element = array[1, 2] # 获取第二行第三个元素(6)
sub_array = array[:, 1:3] # 切片:获取各行的第二和第三列
4. 数组运算
数组广播
广播是一种强大的机制,它允许 NumPy 在执行算术运算时以不同的形状处理数组。例如,标量与数组的运算:
array = np.array([1, 2, 3])
result = array + 2 # 结果为 array([3, 4, 5])
矩阵运算
NumPy 提供了许多用于矩阵运算的函数:
np.dot(a, b)
:计算两个数组的点积。np.matmul(a, b)
:计算矩阵乘积。np.transpose(a)
:矩阵转置。
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
product = np.dot(matrix_a, matrix_b)
5. 通用函数 (ufunc)
NumPy 提供了大量的通用函数 (ufunc),用于对数组执行元素级运算:
np.add(a, b)
:元素级加法np.subtract(a, b)
:元素级减法np.multiply(a, b)
:元素级乘法np.divide(a, b)
:元素级除法
array_1 = np.array([1, 2, 3])
array_2 = np.array([4, 5, 6])
sum_array = np.add(array_1, array_2) # array([5, 7, 9])
6. 总结
在上篇中,我们探讨了 NumPy 的基本数组操作及数组之间的运算。这些技能是进一步进行复杂数值计算的基础。在下篇中,我们将深入研究 NumPy 中的高级功能,与 SciPy 的集成及如何在数据分析和机器学习任务中应用 NumPy。通过掌握这些技巧,你将能够在科学计算中实现更高效的工作流。
希望本指南能帮助你打下坚实的基础,开始你的 NumPy 之旅。