NumPy教程
NumPy(Numerical Python)是Python编程语言的一个扩展库,它提供了大量的数学函数和操作数组(特别是多维数组)的方法。NumPy是科学计算中不可或缺的一个工具,广泛应用于数据分析、机器学习、科学计算等领域。本教程将带您逐步了解NumPy的基础知识和常用功能。
一、NumPy的安装与导入
在使用NumPy之前,需要先确保它已经安装在您的Python环境中。您可以使用pip命令来安装NumPy:
pip install numpy
安装完成后,您可以在Python脚本或交互式环境中导入NumPy库:
import numpy as np
二、NumPy数组基础
NumPy的核心是ndarray对象,它是一个快速而灵活的大数据集容器。
创建数组
使用
np.array
函数:arr = np.array([1, 2, 3, 4, 5]) print(arr)
使用
np.zeros
和np.ones
创建全0或全1数组:zeros_arr = np.zeros((2, 3)) # 创建一个2x3的全0数组 ones_arr = np.ones((2, 3)) # 创建一个2x3的全1数组
使用
np.linspace
创建等差数列:linspace_arr = np.linspace(0, 10, 5) # 创建一个从0到10的等差数列,包含5个数
使用
np.arange
创建类似Python range的数组:arange_arr = np.arange(0, 10, 2) # 创建一个从0到8(不包括10),步长为2的数组
数组的形状与维度
使用
.shape
属性查看数组的形状:print(arr.shape) # 对于一维数组,输出类似(n,)的元组 print(zeros_arr.shape) # 对于二维数组,输出类似(m, n)的元组
使用
.ndim
属性查看数组的维度:print(arr.ndim) # 输出数组的维度数
数组的数据类型
NumPy数组中的元素可以是不同类型的数据,但每个数组中的所有元素类型必须相同。
使用
.dtype
属性查看数组的数据类型:print(arr.dtype) # 默认会根据输入数据自动推断数据类型
可以在创建数组时指定数据类型:
dtype_arr = np.array([1, 2, 3], dtype=np.float64) print(dtype_arr.dtype)
三、NumPy数组操作
数组索引与切片
NumPy数组的索引和切片操作与Python列表类似,但支持多维索引。
print(arr[2]) # 访问一维数组中的第三个元素 print(zeros_arr[1, 2]) # 访问二维数组中的(1, 2)位置的元素 print(arr[1:4]) # 切片操作,获取一维数组中的第2到第4个元素(不包含第4个)
数组数学运算
NumPy支持数组间的数学运算,这些运算会逐元素进行。
arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) print(arr1 + arr2) # 对应元素相加 print(arr1 * arr2) # 对应元素相乘 print(np.sin(arr1)) # 对数组中的每个元素应用sin函数
数组统计与聚合
NumPy提供了丰富的统计函数,如求和、平均值、最大值、最小值等。
print(np.sum(arr)) # 求和 print(np.mean(arr)) # 平均值 print(np.max(arr)) # 最大值 print(np.min(arr)) # 最小值 print(np.std(arr)) # 标准差
数组重塑与广播
重塑数组:使用
.reshape
方法可以改变数组的形状。reshaped_arr = arr.reshape((5, 1)) # 将一维数组重塑为5x1的二维数组
广播:NumPy支持广播机制,允许在不同形状的数组之间进行数学运算。
arr3 = np.array([[1], [2], [3]]) print(arr + 10) # 将数组arr中的每个元素加10,即使10是一个标量 print(arr3 + arr) # arr3是3x1的数组,arr是1x5的数组(在广播后视为3x5),对应元素相加
四、NumPy的高级功能
线性代数
NumPy提供了线性代数相关的函数,如矩阵乘法、矩阵分解等。
A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) print(np.dot(A, B)) # 矩阵乘法 print(np.linalg.inv(A)) # 矩阵求逆
随机数生成
NumPy的
random
模块提供了多种随机数生成函数。print(np.random.rand(3, 3)) # 生成一个3x3的随机数组,元素在[0, 1)之间 print(np.random.randn(3, 3)) # 生成一个3x3的随机数组,元素服从标准正态分布 print(np.random.randint(0, 10, (3, 3))) # 生成一个3x3的随机整数数组,元素在[0, 10)之间
文件读写
NumPy支持从文本文件或二进制文件中读写数组数据。
# 保存到文本文件 np.savetxt('array.txt', arr, delimiter=',') # 从文本文件读取 loaded_arr = np.loadtxt('array.txt', delimiter=',') print(loaded_arr)
五、总结
NumPy是一个功能强大的科学计算库,它提供了高效的数组操作和数据处理能力。通过掌握NumPy的基础知识和常用功能,您可以更高效地处理和分析数据。本教程仅涵盖了NumPy的一部分内容,建议您进一步阅读NumPy的官方文档或相关书籍,以深入了解NumPy的高级功能和最佳实践。
本文地址:https://www.tides.cn/p_numpy-tutorial