Python的Numpy入门基础2

15 篇文章 0 订阅
4 篇文章 0 订阅

NumPy作为Python的常用库,主要实现数组的计算和分析。
上回书说到:NumPy数组创建、索引、切片、转置的定义和注意事项;
顺其自然,就涉及到矩阵的运算:
A.数学函数:针对数组和元素的通用函数,包含单个数组的一元函数:开方、指数、取整、判断NaN等;也包含多个数组的二元函数:加、减、相乘、整除、大小比较等;还有比较特殊的矩阵计算:点乘。

  1. 一元函数:

     			np.sqrt(	)				## 开方
     			np.exp(	)					## 指数e^x
     			np.abs(	)、np.fabs(	)    	## 取绝对值、快速绝对值(fast abs)
     			np.rint(	)				## 四舍五入取整
     np.ceil(arr)、np.floor(arr)			##  取	≥ arr	得最小整数;取	≤arr	得最大整数。
     			np.isnan(	)				## 返回不是数字(NaN)的   布尔型数组
     decimal,integer = np.modf(arr)  		##  将  arr	的小数部分、整数部分分开,分别赋值给新变量。
    
  2. 一元函数:针对矩阵的 行列 的数值计算;


arr.mean(axis=1) 	 ## 输出  每一	行	的均值   ;  (可以增加	axis	参数,axis可以省略  )
arr.sum(0)			 ## 输出	每一	列	的和
arr.cumsum(0)   	 ##	保持矩阵的相同维度, 在每一 列	的原始位置,输出中间步骤 的  累	加值	
arr.cumprod(0) 		 ##	保持矩阵的相同维度, 在每一 列	的原始位置,输出中间步骤 的  累	乘值

应用方向: 累加—— 用于计算累计的总量;
累乘—— 用于计算当前量,通过原始量、实时变化率,计算当前 数据值。
4. 二元函数:


			np.maxinum(x,y)			## 取元素的较大值
			np.add(x,y)				##  元素相加
			np.subtract(x,y)		##  从第一个数组减去第二个数组的元素
			np.multiply(x,y)		##  数组之间的元素相乘
np.divide(x,y)、np.floor_divide(x,y)	##	除法、整除(向下取整)
			np.mod(x,y)      		##  除法,取余数;(同EXCEL)
np.greater(x,y)、np.greater_equal(x,y)、np.less(x,y)、np.less_equal(x,y)   ##  >、	≥、<、≤
  1. 矩阵的点乘:
    x.dot(y) == np.dot(x,y); x@np.one(3) == np.dot(x,np.ones(3))

     				x.T.dot(x)    # 计算	x	的内积。
    

Tips:布尔型数组的妙用。
1)在常用的矩阵数组中,可以利用条件语句,将生成的布尔型数组与函数结合,实现一定的功能。
sum()函数,可实现累加功能;
当结合数组的判断语句,可实现>0的计数器功能:
(arr>0).sum( ) # 计数
2)直接应用在布尔型数组上,存在两个函数:
arr.any( ) #检查是否存在 True 值,或是否存在不为 0 的值
arr.all( ) #检查是否全为 True 值,或是否全不为 0 的值

B.功能函数:针对矩阵,实现依据条件变更、排序、提取、累加等目的的函数。
1.条件-变更函数:在数据分析中,将原数组arrx元素,依据cond,看是否变更为arry的元素,生成新数组

arrnew	=	np.where(cond,arrx,arry)   ##   ==  if condition ,  arrx;
										       else   arry.

例如:

np.where(arr>0,arr,0)		#arr数组中的所有元素,当元素<=0,就讲元素全部置为  0

2.排序函数:

arr.sort(	)      #一维数组的原地排序
arr.sort(1)  	   #  在每一行,进行原地排序;axis  可以省略;
b=np.sort(arr,axis=0)		# 返回排序后数组,原数组不变;# 当axis缺省时,按照每一行排序;axis=0,按照每一列排序;#axis=None,整体排序,生成一维数组。

3.网格、坐标矩阵生成函数:np.meshgrid();

np.meshgrid(x,y)  #    生成两个2维  矩阵,一个以数组	x	为一行,一共复制  len(yT)  行;# 一个以数组  y·T 为一列,共 复制len(x) 列。

常用于 二维矩阵的坐标转化,通过函数式 ,构建三维模型,举例如下:

x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
xx, yy = np.meshgrid(x, y )
 
zz =  (xx**2 + yy**2)

……
ax.plot_surface(xx, yy, zz, rstride=1, cstride=1, cmap='rainbow')  ##  暂时没学到,后续再来更新
……

C.矩阵范数:涉及矩阵的求逆和 linalg()函数

  1. AB=BA=E,则称 B为A的逆矩阵:
  np.linalg.inv()   #  矩阵求逆
    x.dot(inv(x))   #结果为单位矩阵
矩阵行列式:   np.linalg.det()
  1. 矩阵范数:
np.linalg.norm(x,	ord=	……, axis=……, keepdims=False)  
##  ord代表范数的种类:当ord=2(缺省值),二范数  即  所有元素的平方和,再开方;
##					 当ord =1,一范数,即所有元素绝对值的和;  
##					 当ord = np.inf,  无穷范数,即  所有元素绝对值中,最大值;
##  axis  =	0,则按列向量处理,求出每个	列向量	的范数;
##	axis	=	1,则按行向量处理,求出每个  行向量	的范数;
## keepdims  = True ,保留原数组 x 的二维特性,输出	[[……]];.shape=(,),有两个输出;
##			   False,不保留  原数组特性,输出	[……]; .shape(),只有一个输出。	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值