利用python进行数据分析笔记(通用函数:快速的逐元素数组函数)

  • 通用函数,也可以称为ufunc,是一种在ndarray数据中进行逐元素操作的函数。某些简单函数接受一个或多个标量数值,并产生一个或多个标量结果,而通用函数就是对这些简单函数的向量化封装。有很多ufunc是简单的逐元素转换,比如sqrt或exp函数:
>>> import numpy as np
>>> arr = np.arange(10)
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.sqrt(arr)
array([0.        , 1.        , 1.41421356, 1.73205081, 2.        ,
       2.23606798, 2.44948974, 2.64575131, 2.82842712, 3.        ])
>>> np.exp(arr)
array([1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01,
       5.45981500e+01, 1.48413159e+02, 4.03428793e+02, 1.09663316e+03,
       2.98095799e+03, 8.10308393e+03])
  • 这些所谓的一元通用函数。还有一些通用函数,比如add或maximum则会接收两个数组并返回一个数组作为结果,因此成为二元通用函数:
>>> x = np.random.randn(8)
>>> y = np.random.randn(8)
>>> x
array([ 0.64281682,  1.34063891,  0.65456202, -0.96088877,  2.16993944,
        0.1304867 ,  0.57337087, -0.26709099])
>>> y
array([ 0.42610606, -0.49656833, -1.04648181, -2.03357381, -0.84120672,
        1.68150184,  0.46858646,  0.55915863])
>>> np.maximum(x,y)
array([ 0.64281682,  1.34063891,  0.65456202, -0.96088877,  2.16993944,
        1.68150184,  0.57337087,  0.55915863])
  • 这里,numpy.maximum逐个元素地将x和y中元素的最大值计算出来。
  • 也有一些通用函数返回多个数组。比如modf,是Python内建函数divmod的向量化版本。它返回了一个浮点值数组的小数部分和整数部分:
>>> arr = np.random.randn(7) * 5
>>> arr
array([-1.51520888,  1.2907538 , -4.55419127, -4.77484185, -4.09394842,
       -3.74836689, -4.87858508])
>>> remainder,whole_part = np.modf(arr)
>>> remainder
array([-0.51520888,  0.2907538 , -0.55419127, -0.77484185, -0.09394842,
       -0.74836689, -0.87858508])
>>> whole_part
array([-1.,  1., -4., -4., -4., -3., -4.])
  • 通用函数接收一个可选参数out,运行对数组按位置操作:
>>> arr
array([-1.51520888,  1.2907538 , -4.55419127, -4.77484185, -4.09394842,
       -3.74836689, -4.87858508])
>>> np.sqrt(arr)
<stdin>:1: RuntimeWarning: invalid value encountered in sqrt
array([       nan, 1.13611346,        nan,        nan,        nan,
              nan,        nan])
>>> np.sqrt(arr,arr)
array([       nan, 1.13611346,        nan,        nan,        nan,
              nan,        nan])
>>> arr
array([       nan, 1.13611346,        nan,        nan,        nan,
              nan,        nan])
  • 下图列举的是可用的通用函数:
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值