shaoheshaohe 发表于 2019-9-22 20:42:21

Numpy数组用法

机器学习的最基础模块就是numpy模块了,而numpy模块中的数组操作又是重中之重,所以我们要把数组的各种方法弄得明明白白的,以下就是数组的一些常用方法1.创建各种各样的数组:https://common.cnblogs.com/images/copycode.gif
import numpy as npimport matplotlib.pyplot as pltprint(np.zeros(10))#一维全零数组print(np.zeros((3,3),dtype=np.int))#多维tupple数组3行3列可以加数据类型print(np.ones(10))   #一维全1数组print(np.ones((4,4)))   #多维全1数组print(np.full((3,5),8))#可以指定数组元素的值print(np.identity(4))   #创建单位矩阵print(np.eye(4,4,1))    #4行4列单位矩阵 对角线从下标1开始print(np.array('ltf','fjf']))   #可以随便传入数据一维数组print(np.array([,['ltf','lsq','fjf'],['男','女','人妖']]))   #多维数组,随便定义、a=np.array([,])b=np.full_like(a,3.2)c=np.ones_like(a)print(b)print(c)#根据一个向量创建斜对角线方阵 也可以指定对角线位置arr2d=np.diag()print(arr2d)print(np.arange(1,6))#类似于range 不包含上界print(np.arange(1,10,2))   #开始 结束 步长print(np.linspace(1,10,4))#开始 结束 个数print(np.logspace(1,4,4))   #分为4个等分点,形成数组【1,2,3,4】然后形成 对数的底数的指数print(np.logspace(1,5,5,base=2))#指定对数为2#创建坐标系 其实可以用plt.show()x=np.linspace(0,1,5)y=np.linspace(0,1,3)xv,yv=np.meshgrid(x,y)print(xv)print(yv)plt.plot(xv,yv,'^')plt.show()#指数图x=np.arange(-5,5,0.1)y=np.power(2,x)#print(y)plt.plot(x,y)#对数图x=np.power(2,x)y=np.log2(x)plt.plot(x,y)plt.show()x1=np.arange(1,5,1)y1=np.power(x1,3)#x1的3次方print(y1)x2=np.array()y2=np.power(x2,1/3)#x2的1/3次方print(y2)https://common.cnblogs.com/images/copycode.gif

2.数组的复制等各种操作https://common.cnblogs.com/images/copycode.gif
import numpy as np#1赋值 改变原数组a=np.array()b=ab=100print(b)print(a)#2 拷贝 不改变原数组a1=np.array()b1=np.copy(a1)b1=20print(a1)print(b1)#3修改arry=np.array()#arry=10arry=8#包头不包尾print(arry)arr1=np.array([,])print(arr1.T)#数组的转置arr1.shape=4,2print(arr1)    #简单分隔#4 分隔arr2=np.arange(0,20,1)print(arr2.reshape(4,5))newarr2=arr2.reshape(4,5)newarr2=8#0行1行 的0列 为8print(newarr2)#5newarr3=np.reshape(newarr2,(1,-1))#行数为1,列数 待定print(newarr3)newarr4=np.reshape(newarr2,(-1,1))#列数为1, 行数 待定print(newarr4)newarr5=newarr3[:,np.newaxis]   #取第一行 即一维数组 在变成一列print(newarr5)#6 二维数组转一维数组arr2d=np.arange(1,21,1).reshape(4,5) #4行5列print(arr2d)arr2d1=np.ravel(arr2d)print(arr2d1)#arr2d1和arr2d共享同一块内存print(arr2d.flatten())   #不共享内存#7 resize使用arrresize=np.resize(arr2d,(5,2))#5行2列本来有20个元素 只取其中的10个也可以 不像reshape必须全取print(arrresize)#8 转置多维转换置换 arr3d=np.arange(1,28,1).reshape(3,3,3)print(arr3d)arr3d1=np.transpose(arr3d)print(arr3d1)https://common.cnblogs.com/images/copycode.gif

3.数组的修改等各种操作https://common.cnblogs.com/images/copycode.gif
import numpy as np#1.访问二维数组a=np.arange(1,16,1).reshape(3,5) #3行5列数组print(a)print(a)#访问第一行print(a)#访问第一行第一列的元素print(a)#访问第一行第一列的元素#2.访问二维数组部分元素print('-'*20)b=np.arange(1,16,1).reshape(3,5) #3行5列二维数组print(b)print(b) #第一行下标为2和下标为3的元素print(b[:,3])   #所有行下标为3的列数的所有元素print(b[:,2:5])   #所有行,2,3,4列元素#3.删除元素print('-'*20)c=np.arange(1,16,1).reshape(3,5) #3行5列二维数组print(c)print(np.delete(c,1))#删除行号 返回一位数组print(np.delete(c,))#返回一位数组 删除下标为2,3,8,9的元素#4.删除列元素print('-'*20)d=np.arange(1,16,1).reshape(3,5) #3行5列二维数组print(d)print(np.delete(d,1,axis=0))#删除下标为1这一行print(np.delete(d,,axis=1))#删除下标为2和3 的这两列#5.插入元素print('-'*20)e=np.array([,,])print(e)print(np.insert(e,1,5)) #返回一维数组 把5插入到1号索引后print(np.insert(e,1,5,axis=1))#插入一列 该列元素全为5print(np.insert(e,1,,axis=1)) #插入一列 为0,2,5print(np.insert(e,len(e),[],axis=0))#在最后一列插入一行print(np.c_)]) #在最后一行后面加一列print(np.append(e,[],axis=0))#append追加一列https://common.cnblogs.com/images/copycode.gif

4.数组的组合拼接等等https://common.cnblogs.com/images/copycode.gif
import numpy as np#1.数组的行拼接a=np.array([,])b=np.array([])c=np.concatenate((a,b),axis=0)#axis=0 按行d=np.vstack((a,b))#行 方法print(c)print(d)#2.数组的列拼接a=np.array([,])b=np.array([,])c=np.concatenate((a,b),axis=1)#axis=1 按列 要求具有同样的列数d=np.hstack((a,b))#列方法print(c)print(d)#3.竖直方向将二维数组拆分成若干个数组a=np.arange(1,21,1).reshape(4,5)b=np.split(a,2)c=np.vsplit(a,2)print(b)print(c)#4.水平方向将二维数组拆分成若干个数组a=np.arange(1,21,1).reshape(4,5)b=np.hsplit(a,5)print(b)https://common.cnblogs.com/images/copycode.gif

5.数组的查找,排序,统计https://common.cnblogs.com/images/copycode.gif
import numpy as np#1.检查符合条件的元素a=np.array()b=np.nonzero(a)print(b)#不为0的下标c=aprint(c)#输出不为0的元素 1,3,4,5,8#2.二维数组查找a=np.array([,,])b=np.nonzero(a)c=aprint(c)   #输出一维数组1,2,4,6,8,9#3.查找指定条件a=np.arange(10)print(a)b=np.where(a>5)print(a)#查找大于5的#4.返回条件为truea=np.arange(5)b=np.array()print(a) #输出0,2,3print(b)#5.返回指定索引的若干个元素a=np.array()b=np.take(a,) #返回索引为0,1,4的元素print(b)#5.数组排序a=np.arange(5)print(a[::-1])#倒序,,-1指定步长为-1 倒数b=np.array()print(np.sort(b))#一维数组排序a=np.array([,])print(a)b=np.sort(a,axis=0) #沿着行索引增加方向排序,也就是对每一列排序print(b)c=np.sort(a,axis=1) #沿着列索引增加方向排序,也就是对每一行排序print(c)#5.分界线排序a=np.array()b=np.partition(a,0)print(b) #小于30的在左边 大于30的在右边 等于也在右边c=np.partition(a,6)print(c)#小于50的在左边 大于50的在右边 等于也在右边#6.数组统计a=np.array()print(a.max())#最大值print(np.max(a))#最大值print(np.min(a))#最小值a=np.arange(1,11,1).reshape(2,5) #2行5列2维数组print(a)print(np.max(a)) #所有元素里面的最大值print(np.max(a,axis=0)) #行索引 找出每一列的最大值print(np.max(a,axis=1)) #列索引 找出每一行的最大值a=np.array([,,])print('-'*20)print(np.max(a,axis=0)) #行索引 找出每一列的最大值print(np.max(a,axis=1)) #列索引 找出每一行的最大值#查找极值元素的索引a=np.array()print(np.argmax(a)) #索引号 7print(np.argmin(a)) #索引号 2a=np.array([,,])#3行3列print(a)print(np.argmax(a))print(np.argmax(a,axis=0)) #每一列最大元素的索引print(np.argmax(a,axis=1)) #每一行最大元素的索引#计算数组平均值a=np.arange(1,13,1).reshape(3,4)print(a)print(np.mean(a)) #输出 所有数的和的平均值print(np.mean(a,axis=0)) #每一列的平均值print(np.mean(a,axis=1)) #每一行的平均值#计算数组加权平均值a=np.arange(1,11)print(a) #输出1-11的十个数print(np.mean(a))#没加权重b=np.average(a,weights=np.array())#这是加了权重print(b)

页: [1]
查看完整版本: Numpy数组用法