导图社区 Android-Numpy库使用方法
NumPy是Python中科学计算的基础包,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。本导图介绍了Numpy库的使用方法。
编辑于2021-08-06 16:49:57本导图为作者备考中级经济师(人力资源)过程中形成的学习笔记,已取得人力资源管理师证。中级经济专业技术资格考试设《经济基础知识》和《专业知识和实务》两个科目,题型均为客观题。《专业知识和实务》为专业科目,分为工商管理、农业经济、财政税收、金融、保险、运输经济、人力资源管理、旅游经济、建筑与房地产经济、知识产权10个专业类别;《经济基础知识》为公共科目,由经济学基础、财政、货币与金融、法律、会计、统计六个部分组成。
本导图为中级经济师考试科目《经济基础知识》的统计部分,主要包括统计与数据科学、描述统计、抽样统计、回归分析、时间序列分析。
本导图为中级经济师考试科目《经济基础知识》的货币与金融部分,主要包括货币供求与货币均衡、中央银行与货币政策、商业银行与金融市场、金融风险与金融监管、对外金融关系与政策。
社区模板帮助中心,点此进入>>
本导图为作者备考中级经济师(人力资源)过程中形成的学习笔记,已取得人力资源管理师证。中级经济专业技术资格考试设《经济基础知识》和《专业知识和实务》两个科目,题型均为客观题。《专业知识和实务》为专业科目,分为工商管理、农业经济、财政税收、金融、保险、运输经济、人力资源管理、旅游经济、建筑与房地产经济、知识产权10个专业类别;《经济基础知识》为公共科目,由经济学基础、财政、货币与金融、法律、会计、统计六个部分组成。
本导图为中级经济师考试科目《经济基础知识》的统计部分,主要包括统计与数据科学、描述统计、抽样统计、回归分析、时间序列分析。
本导图为中级经济师考试科目《经济基础知识》的货币与金融部分,主要包括货币供求与货币均衡、中央银行与货币政策、商业银行与金融市场、金融风险与金融监管、对外金融关系与政策。
Numpy
NumPy是Python中科学计算的基础包,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。本导图介绍了Numpy库的使用方法。
Numpy库入门
NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
Numpy的引用
默认:import numpy as np
数据的维度
一维数据:列表和集合类型
二维数据:列表类型
多维数据:字典类型或数据表示格式(JSON、XML、YAML)
ndarray
封装了python原生的同数据类型的 n 维数组
组成
数据 元数据(数据维度、数据类型等) 轴(axis):数据的维度 秩(rank):轴的数量
np.array
生成n维数组
属性
.ndim:维度 .shape:几行几列 .size:元素个数 .dtype:元素类型 .itemsize:元素大小,以字节为单位
ndarray的元素类型
bool
布尔类型
intc
int32或int64
intp
用于索引的整数,int32或int64
整数
int8
8位长度的整数,取值:[-2^7,2^7-1]
int16
int32
int64
无符号整数
uint8
8位无符号整数,取值:[0,2^8-1]
uint16
uint32
uint64
半精度浮点数
float16
16位半精度浮点数:1位符号位,5位指数,10位尾数
float32
float64
复数
complex64
复数类型,实部和虚部都是32位浮点数
complex128
ndarray数组的创建
列表、元组创建
列表创建 元组创建 列表、元组混合创建
函数创建
np.arange(n)
生成一维数组,元素从0到n-1 生成[0,5),以1为间隔的一维数组
np.ones(shape)
根据shape生成一个全1数组
np.zeros(shape)
根据shape生成一个全0数组
np.full(shape,val)
根据shape生成一个全val数组
np.eye(n)
创建n阶单位矩阵
np.ones_like(a)
根据a的形状生成一个全1数组
np.zeros_like(a)
根据a的形状生成一个全0数组
np.full_like(a,val)
根据a的形状生成一个元素全部为val的数组
np.linspace()
根据起止数据等间距地填充数据 endpoint默认为True,得到的点包括终止点 当endpoint为False时,得到的点不包括终止点
np.concatenate()
将多个数组合并成一个新的数组
ndarray数组的变换
维度变换
.reshape(shape)
返回一个与原数组元素相同,但形状变为shape的数组,原数组不变
.resize(shape)
将形状转化为shape,原数组发生改变
.swapaxes(ax1,ax2)
将数组n个维度中的两个进行调换,原数组不变 数组维度从0开始计数
.flatten()
将多维数组降维成一维数组,原数组不变 .flatten() 默认参数为'C',即逐行排列 .flatten("F") 设置为'F'时,逐列排列
类型变换
.astype()
更改数组元素的类型,原数组不变
.tolist()
数组转列表,原数组不变
ndarray数组的操作
一维数组的索引和切片
索引:可同时进行多个索引 切片:a[1:6:2],1号到6号,但不包括6号,以2为步长
多维数组的索引和切片
索引
a[0,0,0],以逗号分隔,每一位代表一个维度
切片
a[0,:,:],以逗号分隔,每一位对应一个维度,每个维度的切片与一维数组一致,若对应维度为冒号,表示该维度元素全部选取
ndarray数组的运算
数组与标量之间的运算
作用于数组的每一个元素
Numpy一元函数
np.abs(a)或np.fabs(a)
计算数组各元素的的绝对值
np.sqrt(a)
计算数组各元素的平方根
np.square(a)
计算数组各元素的平方
np.log(a)、np.log10(a)、np.log2(a)
计算数组各元素的自然对数、10底对数、2底对数
np.ceil(a)、np.floor(a)
计算数组各元素的ceiling值和floor值 ceiling值:向上取整 floor值:向下取整
np.rint(a)
计算数组元素的四舍五入值
np.modf(a)
将数组各元素的小数和整数部分以两个独立数组形式返回
np.cos(a)、np.sin(a)、np.tan(a)
计算数组各元素的三角函数
np.cosh(a)、np.sinh(a)、np.tanh(a)
计算数组各元素的双曲型三角函数
np.exp(a)
计算数组各元素的指数值
np.sign(a)
计算数组各元素的符号值 正数:1 负数:-1 0:0
Numpy二元函数
四则运算
两个数组各元素进行对应运算 +:加 -:减 *:乘 /:除 **:x的y次方
np.maximum(a,b)
逐一比较两个数组的元素大小,返回较大元素组成新的数组 np.maximum(a,b,c):逐一比较数组a数组b对应元素的大小,取各个较大值形成新的数组c
np.minimum(a,b)
逐一比较两个数组的元素大小,返回较小元素组成新的数组
np.mod(a,b)
两数组元素逐一进行模运算,即求余
np.copysign(a,b)
将数组b中各元素的符号赋值给数组a对应元素
算数比较
数组元素逐一对比,满足返回True,不满足返回False < > >= <= == !=
Numpy数据存取与函数
CSV文件仅能用于一维和二维数组的存取 .dat和.csv文件可以被其他程序调用 .npy文件为Numpy独有,用于程序中的临时存取
数据的CSV文件存取
CSV文件
Comma Separated Value,以逗号为分隔值的一种数据存储格式
np.savetxt()
生成CSV文件 np.savetxt(frame,array,fmt='',delimiter='') frame:生成的文件名和路径 array:存入文件的数组 fmt:元素的格式,例如:%d(十进制整型)、%.2f(两位浮点型)、%.18e(科学计数法) delimiter:分隔符,默认是空格
np.loadtxt()
读取CSV文件 np.loadtxt(frame,dtype=np.float,delimiter='',unpack=False) frame:要读取的文件名及其所在路径 dtype:数据类型 delimiter:以什么为分隔符读取文件 unpack:如果是True,读入属性将分别写入不同变量
CSV文件的局限性
只能存储一维和二维数组
多维数据的存取
.tofile()
.tofile(frame,sep=' ',format='') 将数组生成.dat文件 frame:生成文件的名称及路径 sep:分隔符 format:写入数据格式
np.fromfile()
np.fromfile(frame,dtype=float,count=-1,sep='') 以一维方式读取文件,需要知道原数组的维度和元素类型才能还原 frame:读取文件的名称及路径 dtype:以什么数据类型来读取,默认浮点型 count:读取的元素个数,-1表示读入整个文件,默认读入整个文件 sep:以什么分隔符读取
np.save()
正常:np.save(fname,array) 压缩:np.savez(fname,array) fname:生成的文件名及路径,正常扩展名为.npy,压缩扩展名为.npz array:要存储为文件的数组
np.load()
np.load(fname) fname:要读取的文件名及路径
Numpy的随机数函数
np.random.rand()
[0,1)之间的随机浮点数,各个元素出现的频率服从均匀分布
np.random.nrand()
生成服从标准正态分布的随机元素
np.random.randint()
np.random.randint(low,high,shape) 生成[low,high)的随机整数数组
seed(s)
随机数种子,默认为当前系统的时间,同样的随机数种子将生成同样的随机数
np.random.shuffle(a)
数组各行顺序随机排列,原数组发生改变
np.random.permutation(a)
数组各行顺序随机排列,原数组不变
np.random.choice()
np.random.choice(a,size,replace,p) 从一维数组a中以概率p抽取元素,形成size形状的新数组 replace默认为True,即元素可以重复,挑选时不必去除已经挑选的元素 p为与a长度一致的一维数组
np.random.uniform(low,hign,size)
np.random.uniform(low,high,size) 产生服从均匀分布的数组 low:起始值 high:结束值 size:数组形状
np.random.nomal(loc,scale,size)
np.random.normal(loc,scale,size) 产生服从正态分布的数组 loc:均值,默认为0 scale:标准差,默认为1 size:数组形状
np.random.poisson(lam,size)
np.random.poisson(lam,size) 产生服从泊松分布的数组 lam:随机事件发生率 size:数组形状
Numpy的统计函数
np.sum(a,axis)
计算给定轴元素之和 axis:给定轴,默认整个数组
np.mean(a,axis)
计算给定轴元素的期望
np.average(a,axis,weights)
计算给定轴元素的加权平均值
np.std(a,axis)
计算给定轴元素的标准差
np.var(a,axis)
计算给定轴元素的方差
np.min(a)
返回数组中的最小值
np.max(a)
返回数组中的最大值
np.argmin(a)
返回数组中最小值的一维坐标
np.argmax(a)
返回数组中最大值的下标
np.unravel_index(index,shape)
根据shape将一维下标index转化为多维下标
np.ptp(a)
数组中最大值与最小值的差
np.median(a)
计算数组中的中位数
Numpy的梯度函数:np.gradient(a)
一维
第一个元素的梯度:第二个元素-第一个元素,18-12 最后一个元素的梯度:倒数第一个元素-倒数第二个元素,15-16 中间元素:(右侧元素-左侧元素)/2,(10-12)/2,(16-10)/2
二维
二维数组会返回两个梯度数组 第一个为第一层维度的梯度,第二个为第二层维度的梯度
图像的手绘效果
图像的数组表示
图像的RGB色彩模式
每个像素点的颜色由R(红)、G(绿)、B(蓝)组成 R、G、B取值范围:0~255
PIL库
PIL库是一个具有强大图像处理能力的第三方库 安装方法:pip install pillow Image是PIL库中代表一个图像的类 调用方法:from PIL import Image
图像的数组表示
convert:转换模式设置,共三个转换模式 .convert('RGB'):默认模式,转换为三维数组,高度、宽度、RGB。 转化为RGB模式,每个像素用RGB三个通道表示,每个通道用8个bit表示。 .convert('L'): 转化为灰度图像,每个像素用8个bit表示,0表示黑,255表示白,0~255表示不同的灰度。 L=R * 299/1000 + G * 587/1000 + B * 114/1000 .convert('1'):转化为二维数组,高度、宽度。 转化为二值图像,非黑即白,每个像素用True或False表示,False表示黑,True表示白。
RGB互补转换
灰度转换
区间变换
像素平方
图像的手绘效果