导图社区 numpy库思维导图
这是一篇关于numpy库的思维导图,知识点有ndarray数组、矩阵、文件读写等板块,结构型知识框架方便学习理解!
编辑于2021-10-16 23:03:02numpy库
ndarray数组
基础
创建数组函数
np.array([x,y,z],dtype=int)
从列表或数组中创建数组
np.arange(x,y,i)
创建一个由x到y,以i为步长的数组
np.lispase(x,y,n)
创建一个由x到y,等分成n个元素的数组
np.logspace(start=开始值,stop=结束值,num=元素的个数,base=指定对数的底,endpoint=是否包含结束值)
创建等比数列
np.indices((m,n))
创建一个m行n列的矩阵(3维数组)
概率分布形式的数组
高斯分布(正态分布)
np.random.randn(shape)
生成对应形状的高斯分布
np.random.normal(loc,scale,size)
生成均值为loc,标准差为scale,形状为(shape)size的高斯分布
均匀分布
np.random.rand(shape)
生成对应形状(shape)的均匀分布
np.random.uniform(low,high,size)
生成一个从【low,high)中随机采样的,样本数量为size的均匀分布
特殊数组
np.ones((m,n),dtype)
创建一个m行n列的全1数组,dtype为数据类型
np.zeros((m,n),dtype)
创建一个m行n列的全0数组,dtype为数据类型
np.empty((m,n),dtype)
创建一个m行n列的空数组,dtype为数据类型
元素全近似为0
np.full(shape,val)
生成全是val
np.eye(n)
生成单位矩阵
基本数据类型
bool
用一位存储的布尔类型(值为True或False)
inti
由所在平台决定其精度整数(一般为int32或int64)
int8
整数,范围为-128~127
int16
整数,范围为-32768~32767
int32
整数,范围为
int64
整数,范围为
uint8
无符号整数,范围为0~255
uint16
无符号整数,范围为0~65535
uint32
无符号整数,范围为0~
uint64
无符号整数,范围为0~
float16
半精度浮点数(16位),其中用1位表示正负号,用5位表示指数,用10位表示尾数
float32
半精度浮点数(32位),其中用1位表示正负号,用8位表示指数,用23位表示尾数
float64或float
双精度浮点数(64位),其中用1位表示正负号,用11位表示指数,用52位表示尾数
complex64
复数,分别用两个32位浮点数表示实部和虚部
complex128或complex
复数,分别用两个64位浮点数表示实部和虚部
常用属性
ndarray.ndim
返回数组轴的个数,即数组的秩
ndarray.shape
返回数组在每个维度上大小的整数元组
ndarray.size
返回数组元素的总个数
ndarray.dtype
返回数组元素的数据类型
ndarray.itemsize
返回数组元素的字节大小
ndarray.data
返回数组元素的缓存区地址
ndarray.flat
数组元素的迭代器
ndarray.astype(new_type)
数据类型的转换
ndarray.tolist()
数组向列表的转换
形态操作
ndarray,reshape(n,m)
返回一个维度为(n,m)的数组副本
ndarray.resize(new_shape)
修改数组的维度大小
ndarray.swapaxes(ax1,ax2)
调度数组ax1维度与ax2维度,返回调换后的数组
ndarray.flattern()
对数组进行降维,返回一维数组
ndarray.ravel()
对数组进行降维,返回数组的一个视图
运算
算术运算
np.add(x1,x2[,y])
y = x1 + x2
np.subtract(x1,x2[,y])
y = x1 - x2
np.multiply(x1,x2[,y])
y = x1 * x2
np.divide(x1,x2[,y])
y = x1 / x2
np.floor_divide(x1,x2[,y])
y = x1 // x2
np.negative(x[,y])
y = -x
np.power(x1,x2[,y])
y = x1 ** x2
np.remainder(x1,x2[,y])
y = x1 % x2
比较运算函数
np.equal(x1,x2[,y])
y = x1==x2
np.not_equal(x1,x2[,y])
y = x1!=x2
np.less(x1,x2[,y])
y = x1 < x2
np.less_equal(x1,x2[,y])
y = x1<=x2
np.greater(x1,x2[,y])
y = x1 > x2
np.greater_equal(x1,x2[,y])
y = x1 >= x2
np.where(condition[x,y])
根据条件判断输出x或y
逻辑运算
arr > a
返回arr中大于a的一个布尔值数组
arr[arr>a]
返回arr中大于a的数据构成的一维数组
np.all()
括号内全为真则返回真,有一个为假则返回FALSE
np.any()
括号内全为假则返回假,有一个为真则返回真
np.where()
三元预算符,判断同时赋值
复合逻辑运算
np.logical_and()
np.logical_or()
统计运算
统计指标函数
min
计算数组中元素的最小值
argmin()
计算数组中元素最小值降一维后的下标
max
计算数组中元素的最大值
argmax()
计算数组中元素最大值降一维后的下标
ptp()
计算数组中元素最大值和最小值的差
mean(a,sxis = None)
根据给定轴axis计算数值a相关元素期望,axis整数或元组
average(a,axis = None,weight = None)
根据给定轴axis计算数值a相关元素加权平均值
median
计算数组中元素的中位数
unravel_index(index,shape)
转换多维下标
var(a,axis = None)
根据给定轴axis计算数值a相关元素方差
std(a,axis =None)
根据给定轴axis计算数值a相关元素标准差
sum(a,axis = None)
根据给定轴axis计算数值a相关元素之和,axis整数或元组
最大值最小值的索引函数
np.argmax(arr,axis=)
np.argmin(arr,axis=)
其他运算符
np.abs(x)
返回数组x每个元素的绝对值
np.sqrt(x)
返回数组x每个元素的平方根
np.square(x)
返回数组x每个元素的平方
np.sign(x)
返回数组x每个元素的符号:1(+)、0、-1(-)
np.ceil(x)
返回大于或等于数组x每个元素的最小值
np.floor(x)
返回小于或等于数组x每个元素的最大值
np.rint(x [,out])
返回数组x每个元素最接近的整数
np.exp(x [,out])
返回数组x每个元素的指数值
np.log(x) / np.log2(x) / np.log10(x)
返回数组x每个元素相应的对数(e、2、10)
索引与切片
x [i]
索引数组x的第i个元素
x [-i]
从后往前索引数组x的第i个元素
x [n : m]
从前往后索引数组x,不包含第m个元素
x [-m : -n]
从后往前索引数组x,结束位置为n
x [n : m: i]
以i为步长索引数组x
广播机制
定义
指不同形状的数组之间执行算术运算的方式
原则
让所有的输入数组向其中shape最长的数组看齐,shape中不足的部分通过在前面加1补齐
输出数组的shape是输入数组shape的各个轴上的最大值
如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1,则这个数组能够用来计算,否则出错
当输入数组的某个轴的长度为1时,沿着此轴运算时使用此轴上的第一组值
合并与分割
分割
np.split(arr,n)
n要么是整数,要么是列表,用来进行划分,n为整数时必须是能均匀划分
合并
np.hstack((a,b))
按行合并,要求a和b的行数相同
np.vstack((a,b))
按列合并,要求a和b列数相同
np.concatenate((a,b),axis=1)
按行合并,要求a和b的行数相同
np.concatenate((a,b),axis=0)
按列合并,要求a和b的列数相同
降维
ravel()
返回一维数组,但是改变返回的一维数组内容后,原数组的值也会相应改变
flatten()
返回一维数组,改变返回的数组不影响原数组
矩阵
创建矩阵
np.mat(";;")
使用分号隔开数据
np.matrix([[],[]])
使用列表将一行的数据装入,并用逗号隔开
np.bmat(“数组1 数组2;数组1 数组2”)
特有属性及其说明
T
返回自身的转置
H
返回自身的共轭转置
I
返回自身的逆矩阵
A
返回自身数据的二维数组的一个视图(没有任何的复制)
运算
矩阵与数相乘
矩阵相加
矩阵相减
矩阵相乘
文件读写
一维和二维数组
存取
np.savetxt(frame,array,fmt='%.18e',delimiter=None,newline='\n', header='', footer='', comments='# ', encoding=None)
frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件 。 array : 存入文件的数组 (一维或者二维)。 fmt:写入文件的格式,例如: %d %.2f %.18e 。 delimiter : 分割字符串,默认是任何空格 。
读取
np.loadtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes')
frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件。 dtype : 数据类型,可选 。 delimiter : 分割字符串,默认是任何空格 。 usecols:选取数据的列。 unpack : 如果True,读入属性将分别写入不同变量 。
多维数组
存取
np.tofile(frame, sep='', format='%s')
frame : 文件、字符串 sep : 数据分割字符串,如果是空串,写入文件为二进制。即,默认为空串。 format : 写入数据的格式
读取
np.fromfile(frame, dtype=float, count=‐1, sep='')
frame : 文件、字符串 dtype : 读取的数据类型 。可以发现,我们读取数据的时候都需要指定数据类型,无论是不是一维二维。默认为浮点型 count : 读入元素个数, ‐1表示读入整个文件 sep : 数据分割字符串,如果是空串,写入文件为二进制
numpy文件的便捷存取
np.save(fname,array)或np.savez(fname,array)
fname : 文件名,以.npy为扩展名,压缩扩展名为.npz array : 数组变量
np.load(fname)
fname : 文件名,以.npy为扩展名,压缩扩展名为.npz