Numpy - 知识点总结(五)
一、算数运算
numpy.add() :数组相加
numpy.subtract():数组相减
numpy.multiply():数组相乘
numpy.devide():数组相除
import numpy as np
A = np.array([1,2,3,4,5])
B = np.array([1,2,3,4,5])
print('A+B = ',np.add(A,B))
print('A-B = ',np.subtract(A,B))
print('A*B = ',np.multiply(A,B))
print('A/B = ',np.divide(A,B))
numpy.reciprocal():返回参数元素的倒数
numpy.power():将第一个输入数组中的元素作为底数,计算它与第二个输入数组相应元素的幂
numpy.mod():返回输入数组中相应元素的除法余数,与numpy.remainder()功能相同
import numpy as np
A = np.array([1,2,3,4,5])
B = np.array([1,2,3,4,5])
print('A+B = ',np.add(A,B))
print('A-B = ',np.subtract(A,B))
print('A*B = ',np.multiply(A,B))
print('A/B = ',np.divide(A,B))
print('幂:',np.power(A,B))
B = np.array([1,2.,2,4,4])
print('取余',np.mod(A,B))
print('取余',np.remainder(A,B))
print('倒数',np.reciprocal(B))
numpy.real():对复数进行操作,返回复数类型参数的实部
numpy.imag():对复数进行操作,返回复数参数的虚部
numpy.conj():返回通过改变虚部的符号而获得的共轭复数
numpy.angle():返回复数参数的角度,函数的参数为degree,为true,返回以角度值表示,否则用弧度制表示;
import numpy as np
A = np.array([1 + 2j,2 + 4j,3 + 0.1j,4,5])
print('复数的实部为:',np.real(A))
print('复数的虚部为:',np.imag(A))
print('复数的共轭复数:',np.conj(A))
print('复数的角度为:',np.angle(A,deg=True))
print('复数的弧度为:',np.angle(A))
二、统计函数
指定轴,则返回指定轴中的相应的值,不指定,则返回整个数组中某一个值
numpy.amin():沿指定轴返回最小值
numpy.amax():沿指定轴返回最大值
numpy.ptp():返回指定轴中值的范围,或者说是最大值减去最小值
numpy.percentile():沿指定轴,返回数组中,指定百分比位置上的值(如果有两个数,50位置上,返回的是这两个数的差值的50%加最小的数的值,如果有3个数,按顺序排列,50%就是中间那个数字)
numpy.median():沿指定轴,返回中轴的值(如果有两个数,50位置上,返回的是这两个数的差值的50%加最小的数的值,如果有3个数,按顺序排列,50%就是中间那个数字)
nump.mean():沿指定轴,返回指定轴的算数平均值
numpy.average():加权平均值是有每个分量乘以反应起重要性的权重因子得到的平均值;不指定权重时,返回数组的算数平均值,指定权重时,按照指定的权重计算平均值
numpy.std():标准差,标准差是与均值的偏差的平方的平方值的平方根,即std = sqrt(mean(sum((x – x.mean())**2)))
numpy.var():方差,方差是偏差的平方的平均值,即mean(sum((x-x.mean())**2))
import numpy as np
A = np.array([[1,2,3,4,5],[6,7,8,9,0]])
print('0轴上最小的值:',np.amin(A,axis=0))
print('1轴上最小的值:',np.amin(A,axis=1))
print('0轴上最大的值:',np.amax(A,axis=0))
print('1轴上最大的值:',np.amax(A,axis=1))
print('0轴最大差值绝对值:',np.ptp(A,axis=0))
print('1轴最大差值绝对值:',np.ptp(A,axis=1))
print('0轴25%处的值为:',np.percentile(A,25,axis=0))
print('1轴25%处的值为:',np.percentile(A,25,axis=1))
print('0轴中值为:',np.median(A,axis=0))
print('1轴中值为:',np.median(A,axis=1))
print('0轴平均值为:',np.mean(A,axis=0))
print('1轴平均值为:',np.mean(A,axis=1))
print('0轴加权平均值为:',np.average(A,axis=0,weights=np.array([[1,1,1,1,1],[1,1,1,1,1]])))
print('1轴加权平均值为:',np.average(A,axis=1,weights=np.array([[1,1,1,1,1],[1,1,1,1,1]])))
print('0轴标准差为:',np.std(A,axis=0))
print('1轴标准差为:',np.std(A,axis=1))
print('0轴方差为:',np.var(A,axis=0))
print('1轴方差为:',np.var(A,axis=1))
三、排序、搜索和计数函数
排序有三种排序算法,分别为quicksort(快速排序)、mergesort(归并排序)以及heapsort(堆排序)
排序时,用算法numpy.sort(),它有以下参数:
sort(a,axis,kind,order)
a:要排序的数组
axis:指定排序的轴
kind:指定使用的排序算法,默认使用quicksort
order:如果数组包含字段,则是要排序的字段
numpy.argsort():函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组
numpy.lexsort():函数使用键序列,执行间接排序;
numpy.argmax():函数返回数组中最大值的索引
numpy.argmin():函数返回数组中最小值的索引
numpy.nonzero():函数返回输入数组中非零元素的索引,多维数组,按轴的方式返回;
numpy.where():函数返回输入数组中满足给定条件的元素的索引
numpy.extract():函数返回满足条件的元素
import numpy as np
A = np.array([4,7,2,8,23,6,3,2,1,7,4,2])
B = np.sort(A,kind='quicksort')
print(B)
B = np.sort(A,kind='mergesort')
print(B)
B = np.sort(A,kind='heapsort')
print(B)
B = np.argsort(A)
print(B)
A = np.array([6,5,2,7,1,4,3])
C = np.array([4,3,1,6,8,0,9])
B = np.lexsort((A,C))
print(B)
print(C[B])
B = np.argmax(A)
print(B)
B = np.argmin(A)
print(B)
B = np.nonzero(A)
print(B)
B = np.where(A >3)
print(B)
B = np.extract(A>3,A)
print(B)
在numpy中,若将ndarray对象直接赋值给另一个对象,那么这两个对象指向的是同一个内存地址;当一个对象改变时,另一个对象也会改变;但若使用ndarray.view或者切片或者copy时,则不会有这个问题
四 、Numpy的矩阵库
empty():返回一个矩阵
zeros():返回一个以零填充的矩阵
ones():返回一个以1填充的矩阵
eye():返回一个单位矩阵,对角线上的值为1
identity():返回给定大小的单位对角矩阵
rand():返回给定大小的填充随机值的矩阵
import numpy as np
A = np.empty([3,4])
B = np.ones([3,4])
C = np.eye(3,4)
D = np.identity(4)
E = np.zeros([3,4])
F = np.random.rand(3,4)
G = np.random.randn(3,4)
print('A',A)
print('B',B)
print('C',C)
print('D',D)
print('E',E)
print('F:返回0~1之间随机分布数据',F)
print('G:返回满足正态分布的随机样本数据',G)
五、numpy的线性代数库
dot():两个数组的点积
vdot():两个向量的点积
inner():两个数组的内积
matmul():两个数组的矩阵积
determinanat():数组的行列式
solve():求解线性矩阵方程
inv():寻找矩阵的乘法逆矩阵
import numpy as np
A = np.arange(0,12).reshape([3,4])
B = np.arange(12,24).reshape([4,3])
print('A为',A)
print('B为',B)
C = np.dot(A,B)
print('A和B的矩阵乘积(点积)',C)
C = np.vdot(A,B)
print('A和B的向量点积',C)
C = np.matmul(A,B)
print('A和B的矩阵乘积:',C)
a1 = np.array([[3,1,1], [1,2,1],[4,2,1]])
a2 = np.array([10,9,15])
print(a1)
print(a2)
C = np.linalg.solve(a1,a2)
print(C)
C = np.linalg.det(a1)
print(C)
C = np.linalg.inv(a1)
print(C)
C = np.inner(A,A)
print('A和B的数组内积',C)
六 、 numpy的IO库
save():将ndarray对象保存为.npy文件,为二进制文件
load():从.npy文件中获取ndarray对象
savetxt():将ndarray对象保存为.txt文件
loadtxt():从.txt文件中获取ndarray对象