numpy
学习目录
- numpy
- numpy概述
- ndarray数组
- ndarray数组的基本索引和切片,以及布尔索引
- Brodcasting:ndarray的矢量化计算
- ndarray数组的浅拷贝与深拷贝
- ndarray数组的转置和轴对换
- ndarray数组重塑
- ndarray数组的拆分和合并
- ndarray数组的元素重复操作
- ndarray数组的添加和移除
- 矩阵的翻转与旋转
- Structured Arrays:结构化数组
- frompyfunc:函数向量化
- Finding Pattern
- numpy中的随机数生成
- ndarray常用的统计方法
- numpy中的线性代数
- numpy与matplotlib结合
- 矩阵matrix
- 代码示例(思维导图)
numpy概述
运行速度快(C语言编写)
功能用途:数组运算
- 强大的N维数组对象ndarray
- 广播功能函数
- 线性代数、傅里叶变换、随机数生成等
ndarray数组
ndarray数组:
N维数组对象(矩阵),所有元素必须是相同的类型
创建ndarray数组函数:
array:将输入数据转换为ndarray
arange:返回一个ndarray而不是列表
ones:创建一个全1数组
zeros:创建一个全0数组
empty:创建新数组
eye:创建一个N*N的单位矩阵(对角线为1,其余为0)
linspace:创建等差数组
ndarray属性:
ndim:表示维度个数
shape:表示各维度大小
dtype:表示数据类型
size:表示数组大小
len:表示数组长度
itemsize:
指定ndarray数组元素的类型
ndarray数组的基本索引和切片,以及布尔索引
基本索引和切片
与Python列表的索引功能类似
boolean mask
通过关系式找数组中需要的元素
boolean mask:布尔索引,使用布尔数组作为索引
Brodcasting:ndarray的矢量化计算
对broadcasting理解
- 广播机制:numpy中array的一个重要操作,对不同shape的数组进行数值计算的方式,通过扩展数组的方法实现,即两个数组对应位元素之间的相加、相减以及相乘的操作(相乘操作区分于线性代数中的矩阵相乘)
- 原则:数组维度不同,但后缘维度的轴长相符,或其中一方的长度为1。后缘长度:从末尾开始算起的维度
- 原理:扩展数组
ndarray数组的浅拷贝与深拷贝
view:视图
数据的引用,通过改引用可访问、操作原数据。
函数:view
浅拷贝:
=
运算符:赋值,为浅拷贝
深拷贝:
copy
copyto
ndarray数组的转置和轴对换
数组的转置/轴对换只会返回源数据的一个视图,不会对源数据进行修改。
函数:
transpose
swapaxes
rollaxis
ndarray数组重塑
函数:
reshape 数组重塑,返回的是视图,会影响原始矩阵
ravel:将多维数组转换为一维数组,返回的是视图,会影响原始矩阵
flatten:将多维数组转换为一维数组,返回的是拷贝
flat:将数组转换为一维的迭代器,可以用for访问数组中的每一个元素
ndarray数组的拆分和合并
函数:
concatenate:沿一条轴连接一组数组
stack:指定维度对数组进行堆叠
split:沿指定轴在指定的位置拆分数组
ndarray数组的元素重复操作
函数:
tile:以整个数组为单位的重复
repeat:以元素为单位的重复
ndarray数组的添加和移除
添加
append:将值赋加到数组的末尾
stack:按照不同轴的堆叠方式重新堆叠数组
insert:在指定轴上的对应位置插入元素
移除
delete:按指定轴删除元素,所有操作都在副本中进行
矩阵的翻转与旋转
函数:
fliplr:左右翻转。适用场景:图片左右翻转
flipud:上下翻转
roll:以指定维度滚动N个元素
rot90:矩阵旋转90°或90°的倍数
Structured Arrays:结构化数组
作用:将不同数据类型(一般有关联性)写入一个矩阵中
设置 创建ndarray数组函数中的 dtype参数
frompyfunc:函数向量化
ufunc的普通用法:通用函数的点对点操作
作用:将计算单个值的函数转化为计算数组中每个元素的函数,基于数组运算的函数,产生一个新的函数
缺点:因为这样的用法涉及大量的函数调用,因此,向量化函数的效率并不高
Finding Pattern
函数:
diff:沿指定轴计算第N位的离散差值
numpy中的随机数生成
函数:(import numpy.random)
seed:确定随机数生成器的种子
rand:产生均匀分布的样本值
randint:从给定的上下限范围内随机选取整数
randn:产生正态分布(平均值为0,标准差为1)的样本值
binomial:产生二项分布的样本值
normal:产生正态分布(高斯)的样本值
beta:产生Beta分布的样本值
chisquare:产生卡方分布的样本值
gamma:产生Gamma分布的样本值
uniform:产生在[0,1]中均匀分布的样本值与for循环结合使用
ndarray常用的统计方法
函数:
sum:对数组中全部或某轴向的元素求和。零长度的数组sum为0
mean:算数平均数。零长度的数组mean为NaN
std、var:标准差、方差
min、max:最大值、最小值
argmin、argmax:最大、最小元素的索引
cumsum:所有元素的累计和
cumprod:所有元素的累计积
numpy中的线性代数
函数(import numpy.linalg):
diag:以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)
dot:矩阵乘法
trace:计算对角线元素的和
det:计算矩阵行列式
eig:计算方阵的本征值和本征向量
inv:计算方阵的逆
pinv:计算矩阵的Moore-Penrose伪逆
qr:计算QR分解
svd:计算奇异值分解(SVD)
solve:解线性方程组Ax=b,其中A为一个方阵
lstsq:计算Ax=b的最小二乘解
numpy与matplotlib结合
矩阵matrix
代码示例(思维导图)
将所有知识点的代码示例及结果 以 思维导图 方式展现
实验平台:Jupyter Notebook
百度云链接: 思维导图
提取码:16in