数学运算函数
Numpy包含大量的数学运算的函数,包括三角函数、算术运算函数、复数处理函数等等。如下表所示。
算术运算
Numpy算术函数包含简单的加、减、乘、除运算,如add()函数、subtract()函数、multiply()函数和divide()函数。这里要注意的是,数组必须具有相同的形状或符合数组广播规则。
import numpy as np
'''加减乘除'''
n1 = np.array([[1,2,3],[4,5,6],[7,8,9]]) #创建数组
n2 = np.array([10, 10, 10])
print(n1)
print(n2)
print('两个数组相加:')
print(np.add(n1, n2))
print('两个数组相减:')
print(np.subtract(n1, n2)) #n1-n2
print('两个数组相乘:')
print(np.multiply(n1, n2))
print('两个数组相除:')
print(np.divide(n1, n2))
"""倒数
reciprocal()函数用于返回数组中各元素的倒数。如4/3的倒数就是3/4"""
a = np.array([0.25,1.75,2,100])
print(a)
print(np.reciprocal(a))
'''求幂
power()函数是将第一个数组中的元素作为底数,计算它与第二个数组中相应元素的幂'''
n3 = np.array([10,100,1000])
print(np.power(n3,3)) #n3的3次方
n4 = np.array([1,2,3])
print(np.power(n3,n4)) #n3的n4次方
'''取余
mod()函数用于计算数组之间相应元素相除后的余数'''
n5 = np.array([10,20,30,-40])
n6 = np.array([4,5,-8,3])
print(np.mod(n5,n6)) #n5除以n6的余数
舍入函数
四舍五入around()函数
该函数返回指定小数位数的四舍五入值。
import numpy as np
'''around()函数'''
n1 = np.array([4.5, 1.5, 6.823, 100, 0.1189, 3.1415926, -2.345]) # 创建数组
print(np.around(n1)) # 四舍五入取整,跟round()类似
print(np.around(n1, decimals=2)) # 四舍五入保留小数点两位
print(np.around(n1, decimals=-1)) # 四舍五入取整到小数点左侧
向上取整ceil()函数
ceil()函数用于返回大于或者等于指定表达式的最小整数
import numpy as np
'''向上取整函数'''
n2 = np.array([-1.8,4.5, 1.66, -0.2, 0.888, 15]) # 创建数组
print(np.ceil(n2)) # 向上取整
向下取整floor()整数
floor()函数用于返回小于或者等于指定表达式的最大整数。
'''向下取整函数'''
import numpy as np
n3 = np.array([-1.8, 1.5, 1.66, -0.2, 0.888, 15]) #创建数组
print(np.floor(n3)) #向下取整
三角函数
Numpy提供了标准的三角函数,即sin()
函数,cos()
函数,tan()
函数。
import numpy as np
n = np.array([0, 30, 45, 60, 90])
# 通过乘 pi/180 转化为弧度
print('不同角度的正弦值:')
print(np.sin(n * np.pi / 180))
print('数组中角度的余弦值:')
print(np.cos(n * np.pi / 180))
print('数组中角度的正切值:')
print(np.tan(n * np.pi / 180))
arcsin()函数、arccos()函数和arctan()函数用于返回给定角度的sin,cos和tan的反三角函数。这些函数的结果可以通过degrees()函数转换为角度。
import numpy as np
n = np.array([0, 30, 45, 60, 90])
print('不同角度的正弦值:')
sin = np.sin(n * np.pi / 180)
print(sin)
print('计算角度的反正弦,返回值以弧度为单位:')
inv = np.arcsin(sin)
print(inv)
print('弧度转化为角度:')
print(np.degrees(inv))
统计分析函数
求和函数
import numpy as np
n=np.array([[1,2,3],[4,5,6],[7,8,9]])
print('对数组元素求和:')
print(n.sum())
print('对数组元素按行求和:')
print(n.sum(axis=0))
print('对数组元素按列求和:')
print(n.sum(axis=1))
求平均值函数
import numpy as np
n=np.array([[1,2,3],[4,5,6],[7,8,9]])
print('对数组元素求平均值:')
print(n.mean())
print('对数组元素按行求平均值:')
print(n.mean(axis=0))
print('对数组元素按列求平均值:')
print(n.mean(axis=1,dtype=int))
求最大最小值函数
import numpy as np
n=np.array([[1,2,3],[4,5,6],[7,8,9]])
print('数组元素最大值:')
print(n.max())
print('数组中每一行的最大值:')
print(n.max(axis=0))
print('数组中每一列的最大值:')
print(n.max(axis=1))
print('数组元素最小值:')
print(n.min())
print('数组中每一行的最小值:')
print(n.min(axis=0))
print('数组中每一列的最小值:')
print(n.min(axis=1))
求加权平均函数
import numpy as np
price = np.array([34.5, 36, 37.8, 39, 39.8, 33.6]) # 创建“单价”数组
number = np.array([900, 580, 230, 150, 120, 1800]) # 创建“销售数量”数组
print('加权平均价:')
print(np.average(price, weights=number))
求中位数
查找中位数会先排序再找
import numpy as np
n=np.array([34.5,36,37.8,39,39.8,33.6]) #创建“单价”数组
# 数组排序后,查找中位数
sort_n = np.sort(n)
print('数组排序:')
print(sort_n)
print('数组中位数为:')
print(np.median(sort_n))
print(np.median(n))
方差,标准差
import numpy as np
n = np.array([34.5, 36, 37.8, 39, 39.8, 33.6]) # 创建“单价”数组
print('数组方差:')
print(np.var(n))
print('数组标准差:')
print(np.std(n))
数组的排序
sort()函数
使用sort()函数进行排序,直接改变原数组,参数axis指定按行排序还是按列排序。(0行1列)
import numpy as np
n=np.array([[4,7,3],[2,8,5],[9,1,6]])
print(n)
print('数组排序:')
print(np.sort(n))
print('按行排序:')
print(np.sort(n,axis=0))
print('按列排序:')
print(np.sort(n,axis=1))
argsort()函数
使用argsort()函数对数组进行排序,返回升序排序
之后数组从小到大的索引值
。
import numpy as np
x=np.array([4,7,3,2,8,5,1,9,6])
y = np.argsort(x)
print('升序排序后的索引值:') #升序之后索引值排序
print(y)
print('排序后的顺序重构原数组:')
print(x[y])
lexsort()函数
lexsort()函数用于对多个序列进行排序,可以把它当作是对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。
import numpy as np
math = np.array([101, 109, 115, 108, 118, 118])
en = np.array([117, 105, 118, 108, 98, 109])
total = np.array([621, 623, 620, 620, 615, 615])
sort_total = np.lexsort((en, math, total)) #以total的索引来代替数值排序
print('排序后的索引值')
print(sort_total)
print('通过排序后的索引获取排序后的数组:')
print(np.array([[en[i], math[i], total[i]] for i in sort_total]))