博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

二、Python开发---30、numpy(5)

Posted on 2020-02-26 21:38  兰智杰  阅读(263)  评论(0编辑  收藏  举报

ndarray通用函数/常用函数

  ufunc:numpy模块中对ndarray中数据进行快速元素级运算的函数,也可以看做是简单的函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器,主要包括一元函数二元函数

  一元函数:

  

import numpy as np
#abs、fabs计算整数、浮点数或者复数的绝对值,对于非复数,可以使用更快的fabs
num = np.random.randint(-6,6,size=(3))
print(num)                                #输出为 [-4  2  4]
print(np.abs(num))                        #输出为 [4 2 4]
print(np.fabs(num))                       #输出为 [4. 2. 4.]
#sqrt()计算各个元素的平方根,相当于arr ** 0.5,要求arr的每个元素必须是非负数
num = np.random.randint(1,7,size = (1,3))
print(num)                                 #输出为 [[2 1 6]]
print(np.sqrt(num))                         #输出为 [[1.41421356 1.         2.44948974]]
#square()计算各个元素的平方,相当于arr ** 2
num = np.random.randint(1,7,size = 3)
print(num)                                  #输出为 [6 1 3]
print(np.square(num))                       #输出为 [36  1  9]
#exp()计算各个元素的指数e的x次方,自然底数e: e ≈ 2.71828.....
num = np.random.randint(1,7,size = 3)
print(num)                                  #输出为 [4 3 1]
print(np.exp(num))                          #输出为 [54.59815003 20.08553692  2.71828183]
#log()分别计算自然对数、底数为10的log、底数为2的log以及log(1+x);要求arr中的每个元素必须为正数
num = np.random.randint(1,7,size = 3)
print(num)                                  #输出为 [3 6 2]
print(np.log(num))                          #输出为 [1.09861229 1.79175947 0.69314718]
#sign()计算各个元素的正负号: 1 正数,0:零,-1:负数
num = np.random.randint(-7,7,size = 3)
print(num)                                  #输出为 [-3  2 -4]
print(np.sign(num))                         #输出为 [-1  1 -1]
'''
    四舍五入函数,这个函数返回满足四舍五入的所需精度的值
    numpy.around(a,decimals)
    a:输入的数组
    decimals:要舍入的小数位,默认值位0,负数表示四舍五入到小数点左侧位置
'''
aro = np.array([1.0,5.56,11,0.567,35.543])
print(aro)                             #输出为 [ 1.     5.56  11.     0.567 35.543]
print(np.around(aro))                   #输出为 [ 1.  6. 11.  1. 36.]
print(np.around(aro,1))                #输出为 [ 1.   5.6 11.   0.6 35.5]
print(np.around(aro,-1))               #输出为 [ 0. 10. 10.  0. 40.]
#向下取整
afl = np.array([-1.7,  1.5,  -0.2,  0.6,  10])
print(np.floor(afl))                    #输出为 [-2.  1. -1.  0. 10.]
#向上取整
afl = np.array([-1.7,  1.5,  -0.2,  0.6,  10])
print(np.ceil(afl))                     #输出为 [-1.  2. -0.  1. 10.]

  

import numpy as np
#modf()将数组中元素的小数位和整数位以两部分独立数组的形式返回
num = np.random.randn(3).reshape(3)
print(num)                        #输出为 [0.01807346 1.4166114  0.12232238]
print(np.modf(num))               #输出为 (array([0.01807346, 0.4166114 , 0.12232238]), array([0., 1., 0.]))
#isnan()返回一个表示“那些值是NaN(不是一个数字)”的布尔类型数组
num = np.random.random(3).reshape(3)
print(num)                         #输出为 [0.81414846 0.52884067 0.14443895]
print(np.isnan(num))               #输出为 [False False False]
#isfinite()、isinf()分别一个表示“那些元素是有穷的(非inf、非NaN)”或者“那些元素是无穷的”的布尔型数组
num = np.random.random(3).reshape(3)
print(num)                          #输出为 [0.92036242 0.46204438 0.3023581 ]
print(np.isfinite(num))             #输出为 [ True  True  True]
print(np.isinf(num))                #输出为 [False False False]
#三角函数,Numpy拥有标准的三角函数,它为弧度制单位的给定角度返回三角函数比值
a = np.array([0,30,45,60,90])
print(np.sin(a*np.pi/180))               #输出为 [0. 0.5  0.70710678  0.8660254  1. ]
print(np.around(np.sin(a*np.pi/180),2))  #输出为 [0.   0.5  0.71 0.87 1.  ]
print(np.around(np.cos(a*np.pi/180),2))  #输出为 [1.   0.87 0.71 0.5  0.  ]
print(np.around(np.tan(a[2]*np.pi/180))) #输出为 1.0

a = np.array([0,45,60])
sin = np.sin(a*np.pi/180)
print(np.arcsin(sin))                    #输出为 [0.   0.78539816 1.04719755]
cos = np.cos(a*np.pi/180)
print(np.arccos(cos))                    #输出为 [0.   0.78539816 1.04719755]
tan = np.tan(a*np.pi/180)
print(np.arctan(tan))                    #输出为 [0.   0.78539816 1.04719755]
#degrees获取角度
print(np.degrees(np.arctan(tan)))        #输出为 [ 0. 45. 60.]

  二元函数:

  

import numpy as np
#mod()元素级的取模
num1 = np.random.randint(15,22,size = (3))
num2 = np.random.randint(1,7,size = (3))
print(num1)                                 #输出为 [21 17 16]
print(num2)                                 #输出为 [3 2 5]
print(np.mod(num1,num2))                    #输出为 [0 1 1]
#dot()求两个数组的点积
a = np.array([[1,2],[3,4]])
b = np.array([[1,1],[1,2]])
print(np.dot(a,b))                          #输出为 [[ 3  5]
                                            #        [ 7 11]]
'''
   greater() 大于
   less()    小于
   equal()   等于
   执行元素级别的比较运算,最终返回一个布尔型数组
'''
num1 = np.random.randint(1,7,size = (3))
num2 = np.random.randint(1,7,size = (3))
print(num1)                             #输出为 [4 1 1]
print(num2)                             #输出为 [3 4 6]
#大于,大于等于
print(np.greater(num1,num2))            #输出为 [ True False False]
print(np.greater_equal(num1,num2))      #输出为 [ True False False]
#小于,小于等于
print(np.less(num1,num2))               #输出为 [False  True  True]
print(np.less_equal(num1,num2))         #输出为 [False  True  True]
#等于,不等于
print(np.equal(num1,num2))              #输出为 [False False False]
print(np.not_equal(num1,num2))          #输出为 [ True  True  True]
'''
   logical_and()
   logical_or()
   logical_xor()
   执行元素级别的布尔逻辑运算,相当于中缀运算符&、|、^
'''
num1 = np.array([[2,1,2],[5,2,1]])
num2 = np.array([[1,0,0],[1,0,1]])
print(np.logical_and(num1,num2))         #输出为 [[ True False False]
                                         #       [ True False  True]]
print(np.logical_or(num1,num2))          #输出为 [[ True  True  True]
                                         #       [ True  True  True]]
print(np.logical_xor(num1,num2))         #输出为 [[False  True  True]
                                         #       [False  True False]]
#power()对数组中的每个元素进行给定次数的指数值,类似于: arr ** 3
num1 = np.random.randint(1,7,size = (3))
print(num1)                                #输出为 [2 3 5]
print(np.power(num1,2))                    #输出为 [ 4  9 25]