Python数据分析之Numpy (4)

一.运算和通用函数

1.算术运算
数组支持加减乘除四则运算

在这里插入图片描述
除法也是一样
原则上讲,只有形状相同的数组才能进行四则运算;但是可以通过 “广播”的形式进行临时转换,使其可以进行运算

在这里插入图片描述
从上面的实验可以清楚看到,不同形状之间不能进行运算;
但是当数组最内部元素个数相同时,通过广播,就可以进行运算了;而且数组还可以和列表进行运算,算法相同

2.比较运算和逻辑运算
(1)比较运算和4则运算相同,比较的是内部元素
在这里插入图片描述
同样的,当内部元素数量不同时,也不能比较;
进行bool值比较时,False默认为0,而True默认为1;
这里用 logical_or,and代替了Python中的and和or,其中 ‘or’ 相当于取并集, ’and’相当于取交集。

(2)逻辑运算也很简单

   np.any(a,axis=None,out=None)    a是类数组对象,只要a中有一个元素是True,则返回True,否则返回False
   np.all(a,axis=None,out=None)    指定所有元素

在这里插入图片描述
3.通用函数
这是一些内置函数,由一元函数和二元函数组成

  一元函数
  三角函数和反三角函数:np.sin,np.cos,np.tan     np.arcsin,np.arccos,np.arctan
  平方根:np.sqrt
  计算自然指数:np.exp
  计算对数:np.log2,np.log10

  二元函数
  得到余数:np.remainder
  返回倒数(不要使用整数型):np.reciprocal
  四舍五入:np.round
  返回对象符号:np.sign

一个例子如下
在这里插入图片描述
此处的decimals参数是保留几位有效数字
下面的例子是验证 sinx2+cosx2==1
在这里插入图片描述
因为刚才a是一个有11个元素的数组,所以返回的数组也有11个元素,且都是1

out参数作用
在这里插入图片描述
先创建一个空数组m,用来存放b除以a的余数
并且a,b,m的形状要相同
此处声明m是将结果存放在m中

4.自定义通用函数
因为numpy内置函数远远不能满足现实的需要,所以设计者可以自定义通用函数
这里自定义了一个体质指数,用来判断人的胖瘦

                 def  bmi(height,weight):
                              bmindex=weight/height**2
                              if  bmindex>18 and bmindex<25:
                                     return 0
                              elif  bmindex<=18:
                                     return -1
                              else:
                                     return 1
                 bmi(2,70)
                 返回值是-1    表明此人偏瘦

因为数据分析的对象是大多数,所以不可能逐个带入,所以我们设计了针对数组的测试方法
假设身高的范围是[ 1.5,2.1) 体重的范围是[ 30,100) 用随机数来完成
先看随机数的用法
在这里插入图片描述

生成的是在(0,1)之间的10个随机数
然后就该对数组操作了
在这里插入图片描述
第一个是用功能强大的列表解析完成的
第二个才是我们的目标
这里必须要解释一下 frompyfunc函数

         frompyfunc(func,nin,nout)
         ~func:Python中定义的函数对象(不是执行函数)
         ~nin:一个整数,表示func函数所接收的参数个数
         ~nout:一个整数,表示func函数返回的对象个数

例:
在这里插入图片描述
pow是求幂函数,返回的是0,1,2,3,4,5的0,1,2,3,4,5次方
可能有人会问,这直接调用pow函数就行,何必要用func函数呢
其实这个例子只是为了理解通用函数的特点,即通过该函数转化后,
bmi函数的参数可以是数组;如果不转化会报错

还有一个方法能将Python函数转化成通用函数如下
在这里插入图片描述
此函数和 frompyfunc函数相同,其作用是将bmi ( )函数矢量化,之后就可以接收数组作为参数了;
并且能通过 otypes 的值设置返回数组的元素类型

二.简单统计应用

1.正太分布

             np.random.normal (loc,scale,size)
             loc:浮点数,分布的平均值
             scale:浮点数,分布的标准差
             size:整数或者整数元素的元组,输出的数据个数,默认为None
             当loc==0,scale==1时,称为标准正太分布

这里有两种表达方式
在这里插入图片描述
生成的都是标准正太分布中的100个随机点

2.简单的统计函数

     函数                                           说明
np.mean,np.average                          计算平均值、加权平均值
np.var                                          计算方差
np.std                                          计算标准差
np.min,np.max                               计算最小值、最大值
np.argmin,np.argmax                         返回最小值、最大值的索引  
np.ptp                                      计算全距,即最小值和最大值的差
np.percentile                               计算百分位在统计对象中的值
np.median                                   计算统计对象的中值
np.sum                                        计算统计对象的和

调用时,np.mean( )填入对象即可,对象可以是元组,数组,列表,单个数字等
在这里插入图片描述
这些函数可以和前面学过的函数综合应用
比如沿1轴和0轴方向求平均值
在这里插入图片描述
我们已经知道,如果以布尔类型的数组作为下标,则可以根据要求返回相应元素
这里np.where( )函数也非常好用
在这里插入图片描述
返回1代表满足前面不等式,-1则代表不满足

当然,也可以只写条件,那么返回的就是由元素索引组成的数组如下
在这里插入图片描述
相信你也看出来了,np.mean (a) 和 a.mean( ) 是一个意思,两种表达。

Numpy中的 np.select( )则能够实现多分支判断和选择
比如我们规定,高于平均值0.3的为A,高于平均分但不足0.3的为B,其余为C
在这里插入图片描述
和前面的一样,我们能够给目标赋予我们想要的结果,当都不满足条件时,默认返回值是0
在这里插入图片描述
不得不说,没什么区别,希望这些对大家有帮助

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值