numpy库学习笔记二——通用函数:快速的逐元素数组函数

通用函数:快速的逐元素数组函数

通用函数,也可以称为ufunc,是一种在ndarray数据中进行逐元素操作的函数.某些简单函数接收一个或多个标量数值,并产生一个或多个标量结果,而通用函数就是对这些简单函数的向量化封装。

有很多ufunc是简单的逐元素转换,比如sqrt或exp函数:

In [49]: arr = np.arange(10)

In [50]: np.sqrt(arr)
Out[50]:
array([0.        , 1.        , 1.41421356, 1.73205081, 2.        ,
       2.23606798, 2.44948974, 2.64575131, 2.82842712, 3.        ])

In [51]: np.exp(arr)
Out[51]:
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:

In [52]: x = np.random.randn(6)

In [53]: y = np.random.randn(6)

In [54]: x
Out[54]:
array([-0.04433526,  0.46146907,  0.15183098, -0.37106862, -0.19443215,
       -0.66353024])

In [55]: y
Out[55]:
array([ 0.60275205, -0.46403985, -0.90029734,  0.68485731, -0.62970257,
        1.6368296 ])

In [56]: np.add(x,y)
Out[56]:
array([ 0.55841679, -0.00257078, -0.74846636,  0.31378869, -0.82413472,
        0.97329936])

In [57]: np.maximum(x,y)
Out[57]:
array([ 0.60275205,  0.46146907,  0.15183098,  0.68485731, -0.19443215,
        1.6368296 ])

这里,numpy.add逐个元素求出x,y的和,numpy.maximum逐个元素地将x和y中元素的最大值计算出来。

也有一些通用函数返回多个数组。比如modf,是Python内建函数divmod的向量化版本。它返回了一个浮点值数组的小数部分和整数部分:

In [60]: arr = np.random.randn(3)*5

In [61]: arr
Out[61]: array([ 0.83514016, -5.42976343, -3.97950723])

In [62]: remainder,whole = np.modf(arr)

In [63]: remainder
Out[63]: array([ 0.83514016, -0.42976343, -0.97950723])

In [64]: whole
Out[64]: array([ 0., -5., -3.])

通用函数接收一个可选参数out,允许对数组按位置操作:

In [65]: arr
Out[65]: array([ 0.83514016, -5.42976343, -3.97950723])

In [66]: np.sqrt(arr)
Out[66]: array([0.91386003,        nan,        nan])

In [67]: arr
Out[67]: array([ 0.83514016, -5.42976343, -3.97950723])

In [68]: np.sqrt(arr,arr)
Out[68]: array([0.91386003,        nan,        nan])

In [69]: arr
Out[69]: array([0.91386003,        nan,        nan])

下列是一些可用的通用函数:

  • 一元通用函数
函数名 描述
abs、fabs 逐个元素计算整数、浮点数或复数的绝对值
sqrt 计算每个元素的平方根(等同于arr**0.5)
square 计算每个元素的平方(等同于arr**2)
  • 二元通用函数
函数名 描述
add 将数组的对应元素相乘
subtract 在第二个数组中,将第一个数组中包含的元素去除
multiply 将数组的对应元素相乘
divide 除或整除(放弃余数)
power 将第二个数组的元素作为第一个数组对应元素的幂次方
maximum,fmax 逐个元素计算最大值,fmax忽略nan
minimum,fmin 逐个元素计算最小值,fmin忽略nan
mod 按元素的求模运算(即求除法的余)
copysign 将第一个数组的符号值改为第二个数组的符号值

你可能感兴趣的:(#,numpy库学习,python,numpy,数据分析)