美文网首页Numpy
NumPy基础之数组常用函数(一)

NumPy基础之数组常用函数(一)

作者: 5f2a6061653d | 来源:发表于2018-09-15 20:53 被阅读7次

    通用函数

    通用函数(ufunc)是对数组中的数据执行元素级运算的函数。常用的一元通用函数如下表所示。

    函数名 说明
    abs、fabs 计算整数、浮点数或复数的绝对值,对于非复数值,可以使用更快的fabs
    sqrt 计算各元素的平方根,相当于arr ** 0.5
    square 计算各元素的平方,相当于arr ** 2
    exp 计算各元素的指数ex
    log、log10、log2、log1p 分别是自然对数(以e为底)、以10为底的log、以2为底的log、log(1+x)
    sign 计算各元素的正负号:1(正数)、0(零)、-1(负数)
    ceil 计算各元素的ceiling值,即大于等于该值的最小整数
    floor 计算各元素的floor值,即小于等于该值的最大整数
    rint 将各元素值四舍五入到最接近的整数,并保留之前的dtype
    modf 将数组的小数和整数部分以两个独立数组的形式返回
    isnan 返回一个值为NaN的布尔型数组
    isfinite、isinf 分别返回一个表示“哪些元素是有穷的”或“哪些元素是无穷的布尔型数组”
    cos、cosh、sin、sinh、tan、tanh 普通型和双曲型三角函数
    arccos、arccosh、arcsin、arcsinh、arctan、arctanh 反三角函数
    logical_not 计算各元素not x的真值,相当于-arr

    二元通用函数如下表所示。

    函数名 说明
    add 将数组中对应元素相加
    subtract 从第一个数组中减去第二个数组中元素
    multiple 数组元素相乘(即点乘)
    divide、floor_divide 除法或向下圆整除法
    power 对第一个数组中元素A,根据第二个数组中的相应元素B,计算AB
    maximum、fmax 元素级最大值计算,fmax将忽略NaN
    minimum、fmin 元素级最小值计算,fmin将忽略NaN
    mod 元素级的求模运算(除法的余数)
    copysign 将第二个数组中的值的符号复制给第一个数组中值
    greater、greater_equal、less、less_equal、equal、not_equal 执行元素级的比较运算符,最终产生布尔型数组,相当于中缀运算符>、>=、<、<=、==、!=
    logical_and、logical_or、logical_xor 执行元素级的真值逻辑运算,相当于中缀运算符&、 、^

    上述两表是常用的元素级一元、二元函数,接下来以sqrt()函数和square()函数为例讲解通用函数的用法,具体示例如下所示:

    In [1]: import numpy as np
    In [2]: arr = np.arange(1,10).reshape(3,3)
    In [3]: sq = np.sqrt(arr)
    In [4]: squ = np.square(arr)
    

    上述代码是通用函数sqrt()和square()函数的使用,其中In [2]是创建一个3行3列的数组,并将其赋值给变量arr;In [3]是sqrt()函数的使用,并将结果赋值给变量sq;In [4]是square()函数的使用,并将结果赋值给变量squ。变量sq和squ的运行结果如下所示:

    In [5]: sq
    Out[5]:
    array([[1.    , 1.41421356, 1.73205081],
     [2. , 2.23606798, 2.44948974],
     [2.64575131, 2.82842712, 3. ]])
    In [6]: squ
    Out[6]:
    array([[ 1, 4, 9],
     [16, 25, 36],
     [49, 64, 81]], dtype=int32)
    

    从上述运行结果可以看出,变量sq是数组arr中的所有数值的平方根,而变量squ是数组arr中所有数值的平方数,并且包含数组的数据类型。

    数组级别的函数

    数组级别的函数一般是基本数组统计函数,例如,聚合类的函数求和(sum)、求平均数(mean)等,基本的数组统计方法如下表所示。

    方法名 说明
    sum 对数组中全部或某轴向的元素求和,零长度的数组的sum为0
    mean 算术平均数,零长度的数组的mean为NaN
    std、var 分别为标准差和方差,自由度可调(默认为n)
    min、max 最大值和最小值
    argmin、argmax 分别为最大和最小元素的索引
    cumsum 所有元素的累计和
    cumprod 所有元素的累计积

    上表是基本的数组统计方法,接下来以sum()函数和mean()函数为例讲解数组级别函数的用法,具体示例如下所示:

    In [21]: import numpy as np
    In [22]: arr = np.random.randint(10,size = 20).reshape(4,5)
    In [23]: sa = arr.sum()
    In [24]: sac = arr.sum(0)
    In [25]: ma = arr.mean()
    In [26]: mar = arr.mean(axis = 1)
    

    上述代码是数组级别函数sum()和mean()的使用,其中In [22]是创建了一个4行5列的随机数组,并将其赋值给变量arr;In [23]是计算数组arr的总和,并将结果赋值给变量sa;In [24]是计算数组arr每一列的和,并将结果赋值给变量sac;In [25]是计算数组arr的平均数,并将结果赋值给变量ma;In [26]是计算数组arr每一行的平均数,并将最终结果赋值给变量mar。各变量的运行结果如下所示:

    In [27]: arr
    Out[27]:
    array([[2, 6, 7, 7, 0],
     [3, 0, 6, 1, 8],
     [8, 1, 4, 5, 4],
     [8, 8, 2, 6, 4]])
    In [28]: sa
    Out[28]: 90
    In [29]: sac
    Out[29]: array([21, 15, 19, 19, 16])
    In [30]: ma
    Out[30]: 4.5
    In [31]: mar
    Out[31]: array([4.4, 3.6, 4.4, 5.6])
    

    布尔数组函数

    布尔数组中True为1,False为0,具体示例如下所示:

    In [47]: import numpy as np
    In [48]: arr = np.random.randint(10,size = 20).reshape(4,5)
    In [49]: arr1 = arr >0
    In [50]: arrs = arr1.sum()
    In [51]: arrt = type(arr1)
    

    上述代码是对布尔数组进行操作,其中In [48]是创建了一个4行5列的随机数组,并将其赋值给变量arr;In [49]是判断数组arr中数值大于0的值,并将结果赋值给变量arr1;In [50]是计算数组arr1的总和,并将结果赋值给变量arrs;In [51]是判断数组arr1中数据类型,并将结果赋值给变量arrt。各变量的运行结果如下所示:

    In [52]: arr
    Out[52]:
    array([[2, 9, 8, 7, 9],
     [6, 7, 7, 2, 0],
     [7, 2, 8, 5, 7],
     [2, 9, 7, 8, 3]])
    In [53]: arr1
    Out[53]:
    array([[ True, True, True, True, True],
     [ True, True, True, True, False],
     [ True, True, True, True, True],
     [ True, True, True, True, True]])
    In [54]: arrs
    Out[54]: 19
    In [55]: arrt
    Out[55]: numpy.ndarray
    

    any()和all()函数通常用来对布尔数组进行特定判断,其用法具体如下:

    • any()函数:只要当布尔数组中有一个为True,则函数返回结果为True。
    • all()函数:当布尔数组中所有值均为True时,函数返回结果才为True。

    在上述示例中使用any()函数和all()函数,运行结果如下:

    In [56]: arr1.any()
    Out[56]: True
    In [57]: arr1.all()
    Out[57]: False
    

    从上述运行结果可以看出,数组arr1中含有1个False,19个True,因此any()函数返回结果为True,all()函数返回结果为False。

    相关文章

      网友评论

        本文标题:NumPy基础之数组常用函数(一)

        本文链接:https://www.haomeiwen.com/subject/khqbbftx.html