之前用R用的顺手了,突然发现python好像更灵活开源,所以最近在学习python,从基础开始学.
以下是numpy模块中数组基本 *** 作,
包括内置的数组创建方法
生成随机数
切片和索引
修改数组形状
组合数组
数组分割
import numpy as np #内置的数组创建方法 #a = np.array([1,2,3,4,5]) #print('数组内容为:',a) #print('数组类型为:',a.dtype) #print('数组的形状为:',a.shape) #print('数组的维数为:',a.ndim) #print('数组的长度为:',a.size) #a = np.random.random(4) #生成随机浮点类型数组 #print(a.dtype) #a = np.array([[1,2,3,4,5],[6,7,8,9,10]],dtype = complex) #创建复数数组 #print('数组内容为:',a) #print('数组类型为:',a.dtype) #a = np.zeros(4) #创建元素均为0的数组,默认为浮点类型,类似还有一个ones()函数 #print('数组a内容为:',a) #print('数组a类型为:',a.dtype) #print('数组a形状为:',a.shape) #print('数组a维数为:',a.ndim) #print('-------------------') #b = np.zeros(4,dtype=np.int) #设置类型为整数 #print('数组b内容为:',b) #print('数组b类型为:',b.dtype) #print('-------------------') #c = np.zeros((3,3)) #生成3*3的二维数组 #print('数组c内容为:',c) #print('数组c形状为:',c.shape) #print('数组c维数为:',c.ndim) #a = np.arange(0,10,1) #创建指定范围的一维数组,数值为0-10的数组,步长为1 #print('数组内容为:',a) #a = np.linspace(0,1,10) #创建数值为0-1的数组,长度为10 #print('数组内容为:n',a) #print('数组长度为:',a.size) #a = np.logspace(0,9,10) #创建数值10的0~9次幂,数组长度为10 #print('数值10的0-9次幂') #print('数组内容为:n',a) #print('数组长度为',a.size) #print('-----------------') #b = np.logspace(0,9,10,base=2) #创建数值2的0~9次幂,数组长度为10 #print('数值2的0-9次幂') #print('数组内容为:n',b) #print('数组长度为:',b.size) #a = np.eye(3) #创建3维数组,对角线元素为1,其余元素为0 #print('数组内容为:n',a) #a = np.diag([1,2,3,4,5]) #创建5维数组,指定对角线元素,其余元素维0 #print('数组内容为:n',a) #生成随机数 #a = np.random.rand(2,3,2) #创建随机数组,数组的元素取自0~1上的均匀分布,第一个参数是数组个数,第二个参数是数组维度,第三个参数是列数 #print('数组内容为:n',a) #print('数组形状为:',a.shape) #print('数组维数维:',a.ndim) #a = np.random.randint(2,10,size=(2,2,3)) #创建指定范围内的随机数组,第一个参数为最小值,第二个参数为最大值,无最大值时,取值区间是0~最小值 #size参数为数组的形状,第一个参数是数组个数,第二个参数是维数,第三个参数是列数 #print('数组内容为:n',a) #print('数组形状为:',a.shape) #a = np.random.random(5) #生成一个0~1的浮点型随机数的数组,参数为随机数个数 #b = np.random.random() #默认生成一个随机数 #c = np.random.random((2,3)) #设置数组形状,(维数,列数) #print('数组a的内容为:n',a) #print('数组b的内容为:n',b) #print('数组c的内容为:n',c) #切片和索引 #a = np.arange(10) #print('数组a的内容为:',a) #print('索引为3的结果:',a[3]) #索引从0开始 #print('指定碎银范围与步长的结果:',a[2:5:2]) #打印从索引2开始到索引5停止,步长为2的结果 #print('索引为2以后的结果:',a[2:]) #索引为2之后的结果,包括索引2 #print('索引为5以前的结果:',a[:5]) #索引为5之前的结果,不包括索引5 #print('索引为-2的结果:',a[-2]) #负数表示从后往前索引,即输出索引为倒数第二的结果 #a[1]=2 #修改指定索引的元素值 #print('修改指定索引元素值后的数组为:',a) #通过索引访问多维数组 #a = np.array([[1,2,3],[4,5,6],[7,8,9]]) #创建多维数组 #print('数组a内容为:n',a) #print('指定索引结果:',a[2]) #输出结果为索引为2的元素,索引从0开始,所以结果是最后一行元素 #print('指定索引范围的结果:n',a[1:]) #打印一行以后的元素,这里索引1就是对应第一行,结果不包括第一行 #print('指定索引范围的结果:n',a[0:3,:2]) #打印第二列之前的元素,结果包括第二列 #print('指定行列结果:',a[0,1:3]) #打印第一行中第2,3列元素 #print('获取第二列元素:',a[...,1]) #打印第2列所有元素 #print('获取第二行元素:',a[1,...]) #打印第2行所有元素 #print('获取第二列及以后的元素:n',a[...,1:]) #打印第2列及以后的元素 #修改数组形状 #a = np.arange(9) #print('原始数组为:',a) #b = a.reshape((3,3),order='F') #修改数组形状,np.reshape(要修改的数组,新的形状应该兼容原有形状,order='C'按行'F'按列'A'按原顺序'k'按元素在内存中出现的顺序) #print('修改后数组为:n',b) #print('修改后数组维度为:',b.ndim) #a = np.arange(9).reshape(3,3) #print('创建的二维数组为:n',a) #print('按行展平后的数组:',a.ravel()) #展平数组元素,ravel(order='C'默认按行'F'按列'A'原顺序'k'元素在内存出现的顺序) #print('按列展平后的数组:',a.ravel(order='F')) #组合数组 #a = np.array([[1,2],[3,4]]) #print('数组a为:n',a) #b = np.array([[5,6],[7,8]]) #print('数组b为:n',b) #c = np.hstack((a,b)) #横向堆叠序列中的数组 #d = np.vstack((a,b)) #纵向堆叠序列中的数组 #e = np.hstack((b,a)) #横向堆叠,可以改变序列顺序 #print('横向组合后的数组为:n',c) #print('横向组合后的数组为:n',e) #print('纵向组合后的数组为:n',d) #a = np.array([[1,2],[3,4]]) #print('数组a为:n',a) #b = np.array([[5,6],[7,8]]) #print('数组b为:n',b) #c = np.concatenate((a,b)) #print('默认组合的数组为:n',c) #d = np.concatenate((a,b),axis=1) #print('组合对应行的数组为:n',d) #e = np.concatenate((a,b,[[9,0],[0,9]]),axis=1) #沿着指定轴连接相同形状的多个数组,np.concatanate((a1,a2,a3,...),axis=0/1)默认为0,按列组合 #print('组合多个数组为:n',e) #数组分割 #a = np.arange(9).reshape(3,3) #b = np.hsplit(a,3) #根据形状分割为3个数组,以列的方式对数组进行分割 #print('原数组为:n',a) #print('分割后的数组为:n',b) #a = np.arange(9).reshape(3,3) #b = np.vsplit(a,3) #以行的方式进行分割,原数组中每行的数组元素作为一个新的数组 #print('原数组为:n',a) #print('分割后的数组为:n',b) #a = np.arange(9) #b = np.split(a,3) #沿着特定的轴将原数组分割为多个数组,np.split(需要被分割的数组,indices_or_sections参数是一个整数时就平均分割数组, #如果是一个数组,就沿轴分割数组位置,axis=0/1要分割的轴,默认为0) #c = np.split(a,[1,5,7]) #这里参数数组表示从索引0开始到索引4为一组,从索引5开始到索引6为一组,从索引7开始到最后为一组,负数也可以 #print('原数组为:',a) #print('平均分割后的数组:',b) #print('数组分割后的数组:',c)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)