Python NumPy基础教程:数组创建、运算与索引切片详解
本文详细介绍Python中NumPy库的基础操作,涵盖数组与矩阵的创建方法、元素级与矩阵级运算规则、常用统计函数以及高效的索引与切片技巧。适合机器学习初学者掌握数据处理核心技能,通过具体代码示例解析广播机制、累加累乘及多维数组访问方式。
NumPy库简介与重要性
NumPy(Numerical Python)是Python语言中用于科学计算的核心扩展库,它提供了强大的多维数组对象及矩阵运算工具,并内置了大量高效的数学函数。作为机器学习与深度学习领域的基石,熟练掌握NumPy是进行数据预处理和算法实现的必要前提。
数组创建基础
导入NumPy库并创建数组是入门的第一步。
常用数组创建函数
import numpy as np
a = np.arraya = np.array([0, 1, 2, 3, 4] ) #使用array函数
a = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28 ,29, 30],
[31, 32, 33, 34, 35]]) #创建多维数组
a=np.zeros((2, 3)) #创建两行三列的0填充的矩阵,ones(shape)则是创建1填充的,np.full((m,n)8) m行n列的全部是8的参数
a=np.linspace(1., 4., 6) #创建1到4之间,共6个元素的等值间距的数组
a=np.arange(起,止,步长) #创建 从起到至,按步长排列的数组
a= np.indices((3,3)) #创建一个堆叠的更高维度的数组
a=np.mat() #创建矩阵,array只能从列表中生成,而mat可以从字符串或者列表中生成,比如mat("1,2;3,4"),而array([1,2,3,4]),mat是矩阵、array是数组(假矩阵)
基本算术运算与广播机制
NumPy支持基本算术运算符,包括加、减、乘、除。
在NumPy中,矩阵间的加减乘除默认执行对应元素(element-wise)的运算。需要注意的是,当一个数组与一个整数进行运算时,该整数会应用到数组的每一个元素上,这一机制称为“广播”(broadcasting)。若涉及不同阶数的数组运算,系统会尝试按行与行进行对应匹配处理。
若使用np.mat创建的矩阵对象执行*运算,则执行的是线性代数意义上的矩阵乘法,而非对应元素相乘,这与普通数组的行为有所区别。
常用数学计算函数
NumPy提供了多种其他计算函数以处理更复杂的数学需求:
- multiply()函数用于执行数组或矩阵对应位置的元素相乘。
- dot()函数用于计算两个数组或矩阵的矩阵乘积(如a.dot(b)表示a与b的矩阵乘法),这符合线性代数中的标准乘法定义。
- sum()函数用于计算数组元素的总和,可通过axis参数指定求和方向:axis=0表示沿纵向(列)求和,axis=1表示沿横向(行)求和。即使数据以[[...],[...],[...]]的形式横向排列,NumPy也会将其视为二维方阵处理,最终返回一维数组结果[...]。
- min()函数用于查找并返回数组中的最小元素。
- max()函数用于查找并返回数组中的最大元素。
- mean()函数用于计算并返回数组元素的算术平均值。
- std()函数用于计算并返回数组元素的标准差。
- var()函数用于计算并返回数组元素的方差。
- cumprod()函数用于计算累乘数组,即返回原数组中当前位置之前所有元素的乘积。该函数支持axis参数指定方向:0表示纵向累乘,1表示横向累乘,默认值为横向。
- cumsum()函数用于计算累加数组,即返回原数组中当前位置之前所有元素的总和。
- ptp()函数用于返回数组中最大值与最小值的差值(Peak-to-Peak)。
数组索引与切片技巧
掌握NumPy的索引与切片操作是高效处理数据的关键。
索引与切片代码示例
import numpy as np
data = np.arange(12).reshape((3, 4))
print(data)
##对数组元素进行索引和切片
# 1. 取第一行的数据
print(data[0])
# 2. 取第一列的数据
print(data.T[0])
print(data[:, 1])
#3. 获取多行
print(data[:2])
# 4. 获取多行列
print(data.T[:2])
print(data[:, :2])
# 5. 获取指定行的前几列;
print(data)
print(data[[0,2], :2])
print(data[:2, [0,2]])
以上内容涵盖了NumPy基础操作的核心要点,希望能为您的学习提供帮助。欢迎继续支持本站获取更多技术资源。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









