当前位置: 首页 > 后端技术 > Python

Python数据分析:numpy

时间:2023-03-26 01:24:18 Python

numpy创建数组(矩阵)创建数组importnumpyasnpa=np.array([1,2,3,4,5])b=np.array(range(1,6))c=np.arange(1,6)#np.arangeusage:arange(start,stop,step,dtype=None)数组的类名和数据类型In[1]:type(a)Out[1]:numpy.ndarrayIn[2]:a.dtypeOut[2]:dtype('int64')#常见类型有int,uint(8,16,32,64),float(16,32,64,128),complex(64,128,256),bool数据类型的操作a=np.array([1,0,1,0],dtype=np.bool)#创建数组时指定数据类型a.astype(np.int8)#修改数组的数据类型b=np.array([0.0485,0.2689,1.8567,0.8754])np.round(b,2)#修改浮点十进制数字数组的形状a.shape#查看数组形状a.reshape(2,2)#修改数组形状a.flatten()#将多维数组转换为一维数组并计数计算a=np.array([1,2,3,4,5])b=a+1#按位加法c=a*3#计算数组之间的按位乘法和数组a=np.array([[1,2,3,4],[5,6,7,8]])b=np.array([[1,1,1,1],[1,1,1,1]])c=np.array([1,1,1,1])d=np.array([[1],[1]])O1=a+b#形状是一样,逐位相加O2=a+cO3=a+d#形状不同,只有满足广播原理才能计算,O1=O2=O3数组a.transpose()a的转置。swapaxes(1,0)a.T以上三个方法可以实现二维数组的转置效果,转置和交换轴的效果结果与numpy索引和切片相同a[1,:]#取一行,可以简写为a[1]a[:,2]#取一列a[1:3,:]#取多个连续的行,可以简写为一个[1:3]a[:,2:4]#取连续的多个列a[[1,3],:]#取离散的多个行,可以简写为一个[[1,3]]a[:,[2,4]]#取离散的多行a[a<2]#boolindexnp.where(a<2,0,4)#三元运算符,如果条件1满足,用0代替,不满足,用4a代替。clip(2,3)#裁剪,大于3替换为3,小于2替换为2numpy中的nan和infnan(NAN,Nan)。表示不是数字,类型是浮动的。(两个nan不相等)inf:infinity,inf表示正无穷大,-inf表示负无穷大,type类型为floatnp.count_nonzero(a!=a)#判断一个np中nan的个数np.isnan(a)#判断是否为nan,returnbooltypea[np.isnan(a)]=0#将nan替换为0numpy中常用的统计函数求和:t.sum(axis=None)mean:t.mean(axis=None)值:np.median(t,axis=None)最大值:t.max(axis=None)最小值:t.min(axis=None)极值:np.ptp(t,axis=None)是最大值与最小值之差的标准差:t.std(axis=None)默认返回多维数组的所有统计结果。如果指定了axis,则返回结果数组在当前轴上的一个拼接np.vstack(a,b)#vertical直接拼接np.hstack(a,b)#水平拼接数组的行列交换a[[1,2],:]=a[[2,1],:]#行交换a[:,[0,2]]=a[:,[2,0]]#列交换其他实用方法1.获取最大值和最小值的位置np.argmax(t,axis=0)np.argmin(t,axis=1)2。创建一个全0的数组:np.zeros((3,4))3.创建一个全1的数组:np.ones((3,4))4.创建一个对角线为1的方阵(方阵):np.eye(3)5.numpy生成随机数注意:numpy的copy和viewa=b根本不copy,a和b相互交互a=b[:],view的操作,aslice,会新建一个对象a,但是a的数据完全由b保存,两者的数据变化是一致的,a=b.copy(),copy,a和b互不影响,这是本次分享到此结束,如果对你有帮助,请关注并留下~