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]