numpy常用函数统计

numpy 常用函数解读:

numpy.loadtxt(filename,delimits=",",unpack=True返回的列是否需要解包,usecols=(返回的列),
				dtype=元素类型默认float每一列必须是相同的元素类型,converters={1,int2float函数}) 
				# 读取CSV 文件中的指定行,并进行转换
numpy.c_(a, b, c)			# 将数组 a, b, c 分别竖起来,再 水平 拼接起来。
numpy.mat([[...],[...])		# 创建一个矩阵
numpy.diag([...])			    # 使用 给定数组 内的值构成矩阵的 主对角线的元素,矩阵的其余元素为 0.
numpy.eye(n)					# 生成一个 n行 n列的单位矩阵(主对角线元素为 1 ,其余元素值为 0)
numpy.isnan(array)		    # 以数组的形式输出array数组中哪些元素是None值的,其结果可以使用过滤器单独获取出来:
numpy.isreal(roots)		    # 用于输出一个数组roots 数组中只有实部的元素
numpy.isreal(roots).real	# 用于获取实部部分
numpy.linespace(start,stop,section)		# 把由start开始到stop 止的数据
														均匀分为section 个点,即section-1 段长度
numpy.polyfit(fit_x,fit_y,fit_d)	# 用于求x 点位集合与对应的y点位集合构成的多项式
numpy.polyder(fit_p)	# 用于求多项式各项参数为fit_p 对应的一阶微分后各项的参数
numpy.roots(fit_p)     # 用于求多项式各项参数为fit_p 的解
numpy.polyval(fit_p,fit_x)	# 用于求多项式各项参数为fit_p的函数,横坐标为fit_x 对应的纵坐标的值
numpy.poly1d([array])		# 输出一个多项式数学表达式,array 为多项式对应项的参数,
							后面加参数() 可以求得该参数在该多项式中的解
function.deriv(m=n)		# 求function函数的 n 阶微分,返回为微分后的微分方程
function.integ()
numpy.hanning(N)		# 用于生成一个N 个数的汉宁窗(卷积核,包含N个参数),返回一个余弦函数序列,
										可被作为卷积核数组,提高移动平均线的质量;
numpy.ones(3)					# 产生一个所有元素都是1 的数组,参数为元素的个数
numpy.zeros((m,n))	  # 生成一个m*n 维的多维数组,元素全部为0
numpy.median(数组)	  # 求数组的中位数,对样本大小进行按照大小顺序排列,居于中间位置的元素就是中位数。
numpy.max(数组)				# 得到数组中最大值
numpy.min(数组)			  # 得到数组中最小值
numpy.maximum(数组1,数组2) # 得到数组1、数组2中 每个对应元素的最大值,最后形成一个数组返回
numpy.minimum(数组1,数组2) # 得到数组1、数组2中 每个对应元素的最小值,最后形成一个数组返回
numpy.sort(数组)		  # 将数组中的元素进行排序后返回
numpy.mean(数组)		  # 求数组中的算数平均数,算数平均值:m = (s1+s2+...+sn)/n
numpy.avrage(数组)	  # 求数组中的加权平均值,加权平均:a = (s1w1+s2w2+...snwn)/(w1+w2+...+wn)
numpy.var(数组)			  # 计算数组的总体方差,反应的是每个信号对 平均值的偏离度
numpy.std(数组)			  # 计算数组的总体标准差
numpy.std(数组,ddof=1) # 计算数组的样本标准差,总体样本和/(N-1) ,ddof 代表自由度,样本偏差时 应取值为 1	
	**注意:**
		如是总体,标准差公式根号内除以n,
		如是样本,标准差公式根号内除以(n-1), 

numpy.diff(数组)		  # 执行的后一个元素减去前一个元素,返回一个数组,数组个数为 数组.size-1 ,即比数组元素个数少一个
numpy.convolve(被卷积的数组,卷积核,"valid")  # 将被卷积数组按照卷积核进行卷积运算,valid 表示有效的区间,不计算伪值.
										(注意,使用的时候需要将卷积核进行反转,即卷积核[::-1],才是需要的结果)
numpy.split(array,3)  # 将数组array 内部元素等分成3等分,等分的前提是数组array能刚好被等分才可。
numpy.apply_along_axis(func,axis,array,*arg,**arg)  # func自己写的处理函数,
							axis函数func对array是作用于行0还是列1,array被作用的数组,*arg,**arg函数func需要传递的参数。
numpy.savetxt(filename,array,delimiter=",",fmt="%g") # 保存文件,文件名filename,文件内容array,分隔符",",
					格式紧缩格式不显示小数最后面的0如:1.2000 显示为1.2

numpy.linalg.lstsq(a,b)  # 使用numpy中的linalg线性代数模块中的lstsq 最小二乘法(least square) 计算数组b 的预测值
numpy.linalg.eigvals(A)  # 求的矩阵 A 的特征值,结果为一个数组
numpy.linalg.eig(A)      # 求矩阵A 的特征值和特征向量集合,返回一个元组,第一个值为特征值 构成的数组,
														第二个值为一个矩阵 :每一 列 为一个特征向量
U,s,V = numpy.linalg.svd(M,full_matrices=False)		
	# numpy.linalg.svd(M) 求矩阵 M 的奇异值s 是奇异值矩阵的主对角元素值。
	可以使用 numpy.diag(s) 得到奇异值矩阵
numpy.linalg.pinv(矩阵)   # 返回值为输入矩阵(可以是方阵、非方阵)的 逆矩阵 
numpy.linalg.det(矩阵)		# 返回为以矩阵为 行列式的 值	


numpy.random.binomial(n, p, size)	# 每轮包含n 次尝试,每次尝试的成功率为 p ,共尝试 size 轮 的统计结果, 返回值为一个数组。

numpy.random.hypergeometric(ngood, nbad, nsample, size)
	ngood : 好样本个数,抽中值为 1
	nbad : 坏样本个数,抽中值为 0
	nsample : 每次抽取所有样本中的 n 个样本数
	size : 重复抽取 次数(有放回的抽取)

numpy.random.normal(size)
	size : 产生size 个随机数,服从标准正态分布

ndarray对象的方法:

	1. ndarray.clip()
		返回一个被修剪过的数组,原数组中所有比最大值大的元素都被设定为最大设定值,比最小值小的元素都设定为最小设定值。
		即超过设定为最大值,低于设为最小值。
		如:
			b = a.clip(1,255)  # 将a数组中所有比1小的都设定为1,比255大的都设定为255,注意a 本身没有改变,
												 # 只是返回一个新的数组,数组的元素个数和 a 数组元素个数一样
	
	2. ndarray.compress()   # 返回一个根据给定条件的筛选田间筛选后的数组。
		注意:compress() 针对的是一维数组,多维数组需平坦化(转换为一维数组)后进行压缩。
			如:
				e = a.compress(a.ravel() > 3).reshape((3,3)) 
				以上意思:将 a 数组平坦后比较比3大的留下,最后再将留下的数组转换为3行3列二维数组。

	3. ndarray.prod()/cumprod()  # 计算数组元素的累乘,所有元素全部乘到一起,直接返回累乘后的结果。
										cumprod() 返回的是累乘的每一步结果组成的数组。
		如:
			a = [1 2 3 4 5]
			a.prod()  ---> 120
			a.cumprod()  ---> [1 2 6 24 120] 
	4. numpy.cov(a,b)     返回协方差矩阵的分子部分
				cov(a,a)   cov(a,b)
				cov(b,a)   cov(b,b)
	
	5. numpy.corrcoef(a,b)  返回相关矩阵(包含分子、分母),计算两个数组的相关性

多项式拟合函数:

numpy.polyfit(x_set,y_set,degree) 
		x_set : 使用横坐标点的集合
		y_set : 横坐标对应的纵坐标点的集合
		degree : 式的拟合多项次数,即最高degree 次幂进行拟合
		返回值 :对应该输入数据拟合的各项参数 组成的数组 

numpy.polyval(fit_p,x_set)
		fit_p : 使用numpy.polyfit() 拟合后多项式的各项参数
		x_set : 需要计算的横坐标集合
		返回值 :根据多项式各项参数,结合x_set 横坐标得到计算后该横坐标对应的计算出的纵坐标的值。

numpy.polyder(numpy.polyfit(x_set,y_set,degree))
		参数 : 为多项式各项的参数
		返回值 : 返回多项式的一阶微分后各项参数

numpy.roots(numpy.polyder(fit_p))
		求方程的根,即求得该多项式方程的解。
		参数:方程的各项对应的参数
		返回值:返回多项式方程的根,以上意思为:求多项式函数的波峰与波谷的点,即对应的斜率为0 的点。

符号数组:

numpy.sign(array)	: 返回输入参数数组中每个元素的符号(-1/0/1)
如:
	a = [10 -21 -32 234 23 0 -33]
	numpy.sign(a) --> [1 -1 -1 1 1 0 -1]

numpy.piecewise(array,[条件1,条件2,条件3],[对应条件1的值,对应条件2的值,对应条件3的值])
	可达到与numpy.sign(array) 同样的效果

矢量化:

将一个针对单个数值的处理函数变成 针对数组处理的函数。
numpy.vectorize() 函数可以将一个针对单个数值处理的函数,变成针对数组的处理函数。
	如:
		def func(a,b,c):
			return a+b+c
		
		A = numpy.arange(1,101)
		B = numpy.arange(101,201)
		C = numpy.arange(201,301)
		使用python的方法对数组A,B,C对应元素进行相加的程序如下:
		D = numpy.zeros(A.size)
		for i,(a,b,c) in enumerate(zip(A,B,C)):
			D[i] = func(a,b,c)
		
		使用numpy里面的标量函数变成矢量函数,numpy.vectorize()方法如下:
		D = numpy.vectorize(func)(A,B,C)

矩阵和通用函数:

矩阵:numpy.matrix() 继承自numpy.ndarray
	创建矩阵:
		numpy.matrix([1 2 3]...)	# 使用matrix类创建一个对象
		numpy.mat([[...],[...],[...]])	# 使用mat()函数创建矩阵
	numpy.matrix(矩阵)创建的矩阵会对原矩阵进行拷贝,可以通过copy参数选择是否对元数据进行复制。
	numpy.mat 不用于 numpy.matrix 之处在于其只能获取已有矩阵视图,而无法得到拷贝。
	而使用numpy.mat()创建的矩阵对原矩阵进行创建一个视图或引用。
	即 numpy.mat() 等价于 numpy.matrix(,copy=False) 

矩阵的方法:
	matrix.T  : 矩阵的转置
	matrix.I  : 矩阵的逆矩阵

块矩阵:
	将一个小矩阵当作一个元素 填入	
	numpy.bmat("one two;three four")

矩阵相乘:
	两个矩阵相乘,其结果为对应元素相乘;与数组相乘不同;
		
矩阵的通用函数:
		把对单个数据进行处理的函数,变为能对数组进行处理的函数
		即,提供函数输入的参数为两个单个标量,当使用矢量做输入时,输出也为矢量
	numpy.frompyfunc(func,nin,nout)
	func : 能对单个数据进行处理的函数
	nin : func函数输入传参的个数
	nout : func函数返回值的个数

实现加减法的通用函数:

	numpy.add.reduce(array)	: 数组内元素的 累加
	numpy.add.accumulate(array) : 数组内元素的 累加过程组成一个数组返回
	numpy.add.reduceat(array,[0,2,4]) : 分段累加,下标0-2之前的累加为第一个结果,下标2-4之间的累加为第二个结果
	numpy.add.outer(array_a,array_b) : 求数组的外和,结果为a 行b 列。

三角函数:

numpy.sin()
numpy.cos()
...

位运算:

^ : 按位异或,相同为0,不同为1,用于快速判断两个数是否同为正负
& : 按位与,同为1为1,用于快速求n是否为2 的整数次幂,n & n-1 其结果为 0

线性代数模块:linalg : linear algebra

1. 矩阵求逆:inv
	numpy.linalg.inv(matrix)

2. 矩阵求解方程组:
	未知方程系数项A,常数项 b 求未知数矩阵 x 
	x = numpy.linalg.solve(A,b)
	A * x = b
	注意:
		矩阵运算A * x 不可写成 x * A

3. 矩阵的特征值 和 特征向量:
	numpy.linalg.eigvals(A)
			参数:要求特征值的矩阵 A
			返回值: 由特征值构成的一个一维数组,每一个元素都是一个特征值。
	numpy.linalg.eig(A)
		参数:要求特征值和特征向量的 矩阵 A
		返回值:返回一个元组,元组的第一个元素为数组,元素为特征值 集合
						元组的第二个元素:为一个矩阵,元素为特征向量为 列 构成的一个矩阵。

	对于 n 阶方阵 A,如果存在数 a 和非零n 维向量 x ,使得
	Ax = ax成立,则称a 是矩阵 A 的一个特真值,x 是矩阵 A 属于特征值 a 的特征向量。
		A的特征向量 :x1,x2,...xn
		A的特征值:  a1,a2,...an
		Axi = aixi, i=1,2,3,...k
	使用numpy提供的函数求解矩阵的特征值和特征向量:
		求A的特征值: eigvals = numpy.linalg.eigvals(A)
		求A的特征值和特征向量:
			eigvals, eigvacs = numpy.linalg.eig(A)
			返回结果为两个数组,第一个数组:特征值 构成的一维数组
				第二个数组:是由特征向量构成的数组,
				特征向量为数组的 每一列 构成,
				即eigvec = eigvecs[:,i] 所有行的第 i 列为一个特征向量。

你可能感兴趣的:(numpy,numpy)