2021-11-12

2021-11-12,第1张

2021-11-12

之前用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)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5490872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存