python学习numpy基础和应用-7

numpy的优势在于科学的计算和数值处理。

例如,我们有一个列表[1,20,28,37,18,56],要求我们将每个元素乘以3,我们该怎么操作?

在python中,我们可以这样解决:

在这里,我们就可以直接整个数组乘3.

这里体现了numpy的优势所在。

在a*3中,我们称3为标量,称数组a为矢量或者向量。

我们这里对数组进行加减乘除的时候,都是对整个数组的元素进行操作。

当然两个数组也是能相操作,但是通常要求形状相同。

但是,也存在不要求一样的情况。

很明了,是a上的0轴与m相加。

这个例子很明了,是1轴相加。

比较运算和逻辑运算

python中的逻辑与比较运算在numpy这里仍然适用。

我们看到,不仅是相同位置的元素进行比较,而且返回的是一个数组。

但是当两个比较得数组形状不一样的时候,就无法进行。

在python中有and,or,not三个逻辑运算符,为了避免关键字,在numpy中,适用logiccal_and,lodical_or,lodical_not,logical_xor,等来表示相关逻辑运算符。

我们在python中可以这样的运算:

我们尝试在numpy中进行相同的操作。

我们得到了报错,提示我们适用a.any()或者a.all(),查看文档,知道这两个函数的意义。

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

np.all(a,axis=None,out=None),如果数组对象a中全为True,则返回True,否则返回False。

通用函数

在numpy中有一类函数称为通用函数,能对数组中每个元素进行操作,速度非常快。

numpy中有一些默认函数,根据默认参数进行划分,一个为一元函数,两个为二元函数。

常用的一元函数举例:

np.sin,np.cos,np.tan    三角函数

np.arcsin,np.arccos,np.arctan 反三角函数

np.sinh,np.cosh,np.tanh 双曲三角函数

np.aqrt 求平方根

np.exp 计算自然指数

np.log,np.log2,np.log10 分别以e,2,10为底的对数。

常用的二元函数:

np.add,np.subtract,np.multiply,np.divide 算数运算函数

np.equal,np.not_equal,np.less,np.less_equal,np.greater,np.greater_equal

比较运算函数

np.power指数运算

np.remainder得到余数

np.reciprocal返回倒数

np.real,np.imag,np.conj返回复数的实部,虚部和完整的复数

np.sign,np.abs得到对象符号和绝对值

np.floor,np.ceil,np.rint结果都是取整

np.round四舍五入。

对于数学中的三角函数平方和为1,那么我们怎么在numpy中实现呢?

我们不仅仅可以使用内置的函数,我们还能进行自定义。

自定义通用函数

我们写一个关于bmi(身体质量指数)的函数,通过这个函数判断一个人的胖瘦。

def bmi(height,weight):
    bmi_index=weight/height**2
    if bmi_index>18and bmi_index<25:
        return 0
    elif bmi_index<=18:
        return -1
    else :return 1
bmi(1.55,45)    

在这个函数中,我们粗略的对胖瘦进行了三档划分,即正常为0,偏瘦为-1,偏胖为1。

我们判断一次就需要输入一次,,如果我们需要一次判断多人,我们可以考虑循环,也可以考虑用数组的方法。

我们先模拟出来一组信息:

h = (2.2-1.4)*np.random.random_sample((10,))+1.4
h = np.round(h,2)
w = (96-30)*np.random.random_sample((10,))+30
w = np.round(w,2)

可以看见,我们模拟完毕。

接下来就是进行测试,但是出了问题。

 

出错了,我们发现出错了,并不是我们所想的那样。

查看提示的错误信息,得知,程序建议我们使用any或all,但是这样就不是我们所想要的情况了。

这样才能实现我们的预期。

为什么函数在经过处理过后就能成为对数组进行操作的函数了呢?

根源于np.frompyfunc(),它能让函数成为能够针对数组进行元素级操作的通用函数。

函数的完整结构是frompyfunc(func,nin,nout),其意义参考如下:

func:python中定义的函数对象

nin:一个整数,表示func函数所能接收的参数个数

nout:一个整数,表示func函数返回的对象个数

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值