目录
1.基础库的下载
(1)终端窗口下载安装
(2)包管理器搜索下载
2.Numpy库常用API简介
(1)创建数组
#构造法
#特殊值法
#随机数法
#定长分割法
#重复构造法
#网格构造法
(2)操作数组
#索引和切片
#结构的改变
#合并与拆分
#复制
#排序
#查找
#筛选
#数组I/O 读入/保存文件
(3)创建矩阵对象
#构造法
#特殊值法
(4)操作矩阵对象
#矩阵变换
#矩阵运算
#矩阵插入
(5)常用函数
#特殊值
#函数的命名空间
#数学函数
#统计函数
#一维线性插值
#多项式拟合函数
#自定义广播函数
(6)掩码数组
#创建掩码数组
#访问数据
#访问掩码
#仅获取有效值
#修改掩码
#掩码数组操作
pip install 库名称
如果想要快速下载可以后面输入镜像网站
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名称
参考资料,以下文章有部分借鉴和汇总:
1.【Python】numpy常用API整理汇总_zstar-_的博客-CSDN博客_numpy中文api下载
2.NumPy概述-科学计算基础软件包NumPy-CSDNPython进阶技能树3.https://edu.csdn.net/learn/32433/501770
4.常用函数-科学计算基础软件包NumPy-CSDNPython进阶技能树
5.np.where()的使用方法_YECHAOOO的博客-CSDN博客_np where6.线性插值 np.interp()_Better-1的博客-CSDN博客_np.interp7.np.where()的使用方法_YECHAOOO的博客-CSDN博客_np where
8.数学建模方法—【04】拟合方法之np.polyfit、np.poly1d_土豆同学的博客-CSDN博客_np.poly1d9.Numpy中矩阵运算_IT之一小佬的博客-CSDN博客_np矩阵运算
10.numpy.ma详解_zhenyu wu的博客-CSDN博客_numpy.ma
#导入numpy
import numpy
#导入numpy 并给别名np
import numpy as np
#构造法
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
object:数组,可以为任意多纬
dtype:数据类型
#特殊值法
#全零矩阵
numpy.zeros(shape, dtype=float, order=‘C’)
#全1矩阵
numpy.ones(shape, dtype=float, order=‘C’)#全空矩阵,实际为极小数
numpy.empty(shape, dtype=float, order=‘C’)#单位矩阵,就是维度序号一致的位置为1
numpy.eye(N, M=None, k=0, dtype=float, order='C’)#随机数法
#随机数0-1,维度大小为size矩阵
numpy.random.random(size=None)
#随机数在low-high之间,维度大小为size矩阵
numpy.random.randint(low, high=None, size=None, dtype=‘l’)#随机数以loc为均值,scale为方差。维度大小为size的正态矩阵
numpy.random.normal(loc=0.0, scale=1.0, size=None)#随机抽样
numpy.random.choice(a, size=None, replace=True, p=None)
a :待抽样的全体样本,它只接受整数或一维的数组。如果是整数,相当于将数组 np.arange(a) 作为全体样本。
size:返回抽样结果数组的结构(shape)。
replace :是否允许多次抽取同一个样本,默认为允许。
p :全体样本集合等长的权重数组,用于指定对应样本被抽中的概率。
#定长分割法
#star开始,stop结束,间隔步长为step生成数组
numpy.arange(start, stop, step, dtype=None)
#star开始,stop结束,生成num个数的数组
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)#重复构造法
#重复a数组,repeats次,在axis轴展开,不指定axis默认平展
numpy.repeat(a, repeats, axis=None)
#reshape形状矩阵中的每一个数替换为a数组返回
numpy.tile( a, reshape)
#网格构造法
#经纬线网格构建,实质是数组在其他轴向的重复
lons,lats = np.meshgrid(lon,lat)
lats, lons = np.mgrid[-90:91:5., -180:181:5.]
#索引和切片
#"[]”和“:”的使用
#以二维数组为例子
array[x1:x2,y1:y2]#切片x1-x2行,y1-y2列的矩阵
array[x1,:]#x1行所有数据的矩阵
array[-1,:]#最后一行数据的矩阵
array[:3,:]#前3行所有数据的矩阵
array[::-1,:]#行按倒叙输出所有矩阵
#结构的改变
#按照指定的结构(形状)返回数组的新视图,但不会改变数组
array.reshape()
#按指定结构改变数组,没返回值
array.resize()
#返回多维数组一维化的视图,但不会改变原数组
array.ravel()
#返回行变列的视图,但不会改变原数组
array.transpose()
# 翻滚轴,返回新的视图
array.rollaxis()
#合并与拆分
#stack合并
numpy.hstack((a,b)) # 水平合并
numpy.vstack((a,b)) #垂直合并
numpy.dstack((a,b)) #深度合并
#在axis轴向上合并arr1和arr2数组
numpy.append(arr1,arr2,axis=0)
#复制
#深复制,独享内存
array.copy()
#浅复制,共享内存
array.view()
#排序
#返回排序的数组
numpy.sort(a, axis=-1, kind=‘quicksort’, order=None)
#返回排序的数组序号
numpy.argsort(a, axis=-1, kind=‘quicksort’, order=None)a:要排序的数组
axis : 沿着它排序数组的轴,如果没有,则沿着最后的轴排序
kind :排序方法,默认为’quicksort’快速排序, ‘mergesort’归并排序和 ‘heapsort’堆排序
order :如果数组包含字段,则是要排序的字段#查找
#返回a数组最小值序号
numpy.argmin(a)
#返回a数组最大值序号
numpy.argmin(a)
#返回a数组非0序号
numpy.nonzero(a)
#当where内有三个参数时,第一个参数表示条件,当条件成立时where方法返回x,当条件不成立时where返回y
#当where内只有一个参数时,那个参数表示条件,当条件成立时,where返回的是每个符合condition条件元素的坐标,返回的是以元组的形式
numpy.where(condition,x=a,y=null)
condition:条件例如array>5
x:数组成立元素返回形式,例如array*2,成立元素返回2倍
x:数组不成立元素返回,例如array*3,不成立元素返回3倍
#筛选#使用numpy.where()返回的python元组
array[numpy.where(array>5)] #返回a数组中大于5的数
#利用逻辑表达式的布尔数组作为筛选条件
array[array>5&array<10]#返回a数组中大于5,小于10的数
#返回整数数组指定项
array[numpy.array([2,3,5])]#返回a数组2,3,5下标的数
#数组I/O 读入/保存文件
# 将数组a保存成CSV格式的数据文件
numpy.savetxt('demo.csv', a, delimiter=',')
# 打开CSV格式的数据文件
np.loadtxt('demo.csv', delimiter=',')
#numpy自定义数据格式
.npy存单个数组
numpy.save('demo.npy', a) # 保存成.npy文件
numpy.load('demo.npy') # 读取.npy文件
.npz存多个数组
np.savez('demo.npz', a1name=a1, a2name=a2) #保存两个数组到一个文件
data = np.load('demo.npz') # 用load()函数把这个.npz文件读成一个结构data
data.files # 查看所有的数组名
data['a1name'] # 使用data[数组名],就可以取得想要的数据
#构造法
m=numpy.mat(列表、数组或字符串, dtype)
#特殊值法
#numpy.matlib子模块
numpty.matllib.zero(size)#全0矩阵
numpty.matllib.ones(size)#全1矩阵
numpty.matllib.eye(int)#单位矩阵
numpty.matllib.empty(size)#全空矩阵
numpty.matllib.randn(size)#标准正态高斯矩阵
#矩阵变换
#转置矩阵
m.T
m.transpose()
#逆矩阵
m.I
#共轭转置矩阵
m.H
# 返回自身数据的视图(ndarray类)
m.A
#矩阵运算
#点乘(运算矩阵后位置(i,j)的数为左矩阵的行i乘右矩阵的列j相加所得的结果)
np.dot(m1,m2)#允许矩阵与标量
np.matmul(m1,m2)#不允许矩阵与标量
#对应位置相乘
m1*m2
#加法
m1+m2
#Linalg库
linalg.det(m) #行列式‘
linalg.matrix_rank(m)#矩阵的秩
#矩阵插入
np.insert(m,index,date,axis)
index:插入位置
date:插入数据
axis:插入轴,如果不写,会降维度成数组
#特殊值
#not a number不是数字
numpy.nan、numpy.Nan、numpy.NaN
#infinity无穷大
numpy.inf
#函数的命名空间
顶层空间的函数,numpy和array都支持;也有各自特殊的函数
顶层命名空间和数组对象均支持 仅数组对象均支持 仅顶层命名空间支持 np/ndarray.any()/all() ndarray.astype() np.where() np/ndarray.max()/min() ndarray.fill() np.stack() np/ndarray.argsort() ndarray.view() np.rollaxis() np/ndarray.mean() ndarray.tolist() np.sin() #数学函数
numpy库与math库比较
NumPy函数 math函数 功能 np.e math.e 自然常数 np.pi math.pi 圆周率 np.ceil() math.ceil() 进尾取整 np.floor() nath.floor 去尾取整 np.around() 四舍五入到指定精度 np.rint() 四舍五入到最近整数 np.deg2rad()/radians() math.radians 度转弧度 np.rad2deg()/degrees() math.degrees() 弧度转度 np.hypot() math.hypot() 计算直角三角形的斜边 np.square() 平方 np.sqrt() math.sqrt() 开平方 np.power() math.pow() 幂 np.exp() math.exp() 指数 np.log()/log10()/log2() math.log()/log10()/log2() 对数 np.sin()/arcsin() math.sin()/asin() 正弦/反正弦 np.cos()/arccos() math.cos()/acos() 余弦/反余弦 np.tan()/arctan() math.tan()/atan() 正切/反正切 #统计函数
函数 功能 np.max/min(a, axis=None)
np.nanmax/nanmin(a, axis=None)返回数组中的最大值/最小值
忽略nan返回数组中的最大值/最小值np.argmax/argmin(a, axis=None)
np.nanargmax/nanargmin(a, axis=None)返回数组中最大值和最小值的索引
忽略nan返回数组中最大值和最小值的索引np.ptp(a, axis=None) 返回数组中元素最大值与最小值的差 np.median(a, axis=None)
np.nanmedian(a, axis=None)返回数组元素的中位数
忽略nan返回数组元素的中位数np.sum(a, axis=None)
np.nansum(a, axis=None)按指定的轴求元素之和
忽略nan按指定的轴求元素之和np.cumsum(a, axis=None)
np.nancumsum(a, axis=None)按指定的轴求元素的累进和
忽略nan按指定的轴求元素的累进和np.diff(a, axis=-1) 按指定的轴返回相邻元素的差 np.prod(a, axis=None)
np.nanprod(a, axis=None)按指定的轴求元素之积
忽略nan按指定的轴求元素之积np.mean(a, axis=None)
np.nanmean(a, axis=None)按指定的轴返回元素的算数平均值
忽略nan按指定的轴返回元素的算数平均值np.average() 根据权重数据,返回数据数组所有元素的加权平均值 np.var(a)
np.nanvar(a)返回数组方差
忽略nan返回数组方差np.std()
np.nanstd()返回数组标准差
忽略nan返回数组标准差np.corrcoef(a, b) 返回两个数组的皮尔逊积矩相关系数 #一维线性插值
y = np.interp(x, xp, fp)
x: 数组 待插入数据的横坐标.xp: 一维浮点数序列,原始数据点的横坐标,如果period参数没有指定那么就必须是递增的。否则,在使用xp = xp % period正则化之后,xp在内部进行排序.
fp: 一维浮点数或复数序列,原始数据点的纵坐标,和xp序列等长.
#其他更加复杂的插值功能放到了SciPy中#多项式拟合函数
#拟合系数数组p
p=numpy.polyfit(x,y,deg )
参数:
p:系数数组,以幂次递减
x: 类数组,形状(M,),表示M个采样点的x坐标
y: 类似array_,形状为(M,)或(M,K), 表示采样点的y坐标。通过传递每列包含一个数据集的2D数组,可以一次拟合多个共享相同x坐标的采样点数据集
deg: 度:整数, 表示拟合多项式的度#拟合系数数组p构成多项式gx
gx=numpy.poly1d(c_or_r,r = False,变量= None )
参数:
gx:返回的多项式
c_or_r: 数组array,代表多项式的系数,以幂次递减,或者如果第二个参数的值为True,则为多项式的根(多项式求值为0的值)。
r bool(可选): 如果为True,则c_or_r指定多项式的根。默认值为False。
可变str(可选): 将打印p时使用的变量从x更改为variable#自定义广播函数
np.frompyfunc()
np.vectorize()
import numpy.ma as ma
掩码数组的作用,掩膜掩盖数组满足条件的一部分值,进行剩余数据的操作
#创建掩码数组
#列表创建掩码数组
marray=ma.array([0, 1, 2, 3], mask=[0, 0, 1, 0]) # 指定第3个元素无效
#ma中其他函数方法创建掩码数组
#访问数据
marray.data
ma.getdata(marray)
#访问掩码
marray.mask
ma.getmask(marray)#marray不为掩码数组,则返回nomask
ma.getmaskarray(marray)#marray不为掩码数组,则返回等长数组的false
#仅获取有效值
marray.compressed()
marray[~marray.mask]
#修改掩码
#增添掩码,将掩码值
ma.masked
赋给它们marray[:2]=ma.masked#前俩个数掩码
#删除掩码,直接赋值
#注意:当掩码数组属性为hard_mask=true时,可能不能有效地对其解除屏蔽。这个特性是为了防止用户对掩码值进行覆盖。要想取消数组的hard_mask属性,必须在解除屏蔽前先对其利用soften_mask方法进行软化。当然,修改完毕之后也可以使用harden_mask属性防止掩码部分被修改:
#掩码数组操作
因为掩码数组 MaskedArray 类是 numpy.ndarray 的派生类,所以那些用在普通 NumPy 数组上的索引和切片操作,数学函数,常用函数同样也会继承