标签:二维 模块 标准 缓冲 二维数组 维数 学习 结果 imp
1 #Numpy数组是一个多维数组对象,称为ndarry,其由两部分组成 2 #实际的数据 描述这些数据的元数据 3 #多维数组 4 import numpy as np 5 ar = np.array([1,2,3,4,5]) 6 print([1,2,3,4,5]) 7 print(ar,type(ar)) 8 print(ar.ndim) #测算数据是几维数组(轴数 或者说是“秩”) 9 print(ar.shape)#数组的维度,对于n行m列的数组,shape为(n,m) 10 print(ar.size)#数组中元素的综述 11 print(type(ar),ar.dtype)#分别看数组的数据类型 和数组中元素的数据类型 12 print(ar.itemsize)#每个元素的字节大小 13 print(ar.data)#数据的缓冲位置
1 #如何创建多维数组 括号内可以是列表 元祖 数组 生成器 2 import numpy as np 3 ar1 =np.array(range(10)) 4 ar2 =np.arange(10) 5 ar3 = np.array([1,2,3,4]) 6 ar4 =np.array([[1,2,3,4],[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘]]) 7 print(ar1) 8 print(ar2) 9 print(ar3) 10 print(ar4) 11 print(ar4,ar4.ndim) 12 print(np.random.rand(10).reshape(2,5))#随机生成10个数字并且按照两行五列的方式排布
1 #创建数组 arrange() 类似于range() 在给定的间隔内返回均匀间隔的值 2 print(np.arange(10))#返回0-9 整形 3 print(np.arange(10.0))#返回0.9-9.0 浮点型 4 print(np.arange(5,12))#返回5-11 5 print(np.arange(5.0,12,2))#返回5.0-12步长为2 6 print(np.arange(10000))#如果数值太大 无法打印 numpy会自动跳过数组的中心部分只打印边角
1 #创建数组 linspace() 返回在间隔【开始,停止】计算的num个均匀间隔的样本 2 print(np.linspace(10,20,num =21)) 3 print(np.linspace(10,20,num =21,endpoint=Falese))#默认最后一个值不包含 默认是true 4 s= np.linspace(10,20,num =21,retstep=True) 5 print(s) 6 print(type(s)) 7 print(s[0])
1 #创建数组 zeros()/zeros_like()/one()/one_like() 2 print(np.zeros((2,5),dtype=np.int))#改成整数型 3 ar = np.array([list(range(10)),list(range(10,20))]) 4 print(ar) 5 print(np.zeros_like(ar)) #填充和shape一样的格式并且用0去填充 6 7 ar5 = np.ones(9) 8 ar6 = np.ones((2,3,4)) 9 ar7 = np.ones_like(ar3) 10 print(ar5) 11 print(ar6) 12 print(ar7) 13 #ones()/ ones_like()和zeros()/zeros_like()一样只是填充的数值为1
1 #创建矩阵的数组 eyes() 单位矩阵 2 print(np.eye(5)) 3 #数组形状 .T/.reshape()/.resize() 4 ar1 = np.arange(16) 5 ar2 = np.zeros((2,5)) 6 print(ar1) 7 print(ar2) 8 print(ar1.T) 9 print(ar2.T) 10 #.T方法:转置 例如原shape()为(3,4),转置的结果为(4,3)并且一维数组 11 #转置后结果保持不变 12 13 14 print(ar1.reshape(8,2)) 15 print(np.ones((10,10)).reshape(5,20)) 16 print(np.reshape(np.arange(16),(2,8))) #先生成一个np.arange(16)的数组 随后用 17 #reshape将其分解为(2,8)的形式 18 19 #resize排序会自行进行调整 20 print(np.resize(np.arange(5),(3,4))) 21 22 ar2 = np.zeros((2,5)) 23 print(ar2) 24 print(‘-------‘) 25 print(ar2.reshape(10)) 26 print(ar2) 27 #reshape会重新生成一个数组 而不是在原来基础上改进
#数组的复制 ar1 =np.arange(10) ar2 =ar1 print(ar2 is ar1) ar1[2]=100 print(ar1,ar2) ar3 =ar1.copy() ar1[3]=100 print(ar1,ar3) s = np.arange(10) print(np.resize(s,(2,6))) print(s.resize(2,6)) print(s) #数组类型转换 astype() 将其转换成数值的类型 ar1 = np.arange(10,dtype = float) ar2 = ar.astype(np.int64) print(ar1,ar1.dtype) print(ar2,ar2.dtype)
#数组堆叠 a = np.arange(5) b= np.arange(5,9) print(a) print(b) print(np.hstack((a,b)))#横向连接 print(‘------‘) #纵向连接 a =np.array([[1],[2],[3]]) b= np.array([[‘a‘],[‘b‘],[‘c‘]]) print(a) print(b) print(np.vstack((a,b))) print(‘------‘) a = np.arange(5) b= np.arange(5,10) print(np.stack((a,b),axis=1))#默认作为纵向的堆叠 当设置为axis 为1时按照横向连接
#数组拆分 h为横向 v为纵向 ar = np.arange(16).reshape(4,4) print(ar) print(np.hsplit(ar,2)[0]) print(np.vsplit(ar,2))
#数组的简单运算 ar =np.arange(6).reshape(2,3) priint(ar + 10) #加法 print(ar * 2 ) #乘法 print(1/(ar+1)) #除法 print(ar **0.5) #求幂 print(ar.mean())#求平均值 print(ar.max())#求最大值 print(ar.min())#求最小值 print(ar.std()) #求标准差 print(ar.var()) #求方差 print(ar.sum(),np.sum(ar,axis=0))#求和,np.sum() (axis为0 按列求和,axis为1 按行求和) print(np.sort(np.array([1,4,3,2,5,6]))) #排序
1 #核心 ;基本索引以及切片 2 import numpy as np 3 ar =np.arange(20) 4 print(ar) 5 print(ar[4])#取数组的第五个元素 6 print(ar[:3])#取数组中的 0 1 2 三个元素 但是不包括第四个元素 7 print(ar[::2])#数组中每隔2个元素取一个 8 print(‘------‘) 9 #一维数组类似于list 10 ar= np.arange(16).reshape(4,4) 11 print(ar) 12 print(ar[2]) 13 print(ar[2][2])#第三行中的第三个元素 14 print(‘---------‘) 15 print(ar[1:3])#从第第一行到第三行但是不包含第三 16 print(ar[2,2])#第三行第三列 17 print(ar[:1,2:])#先取第零行 再取第三列之后的 18 #二维数组索引 19 20 #切片相关知识繁琐 有理解不通的地方请参考廖雪峰老师的网站,里面做了很详细的讲解 21 #https://www.liaoxuefeng.com/wiki/1016959663602400/1017269965565856
1 ar=np.arange(12).reshape(3,2,2) 2 print(ar) 3 print(ar[2])#索引第三个数组 4 print(ar[2][1])#索引第三个数组中索引为2的行 5 print(ar[2][1][0])#索引第三个数组中索引为2的行中的第一个元素
#布尔值的切片和索引 ar = np.arange(12).reshape(3,4) print(ar) i = np.array([True,False,True]) j = np.array([True,True,False,False]) print(i) print(j) print(ar[i,:])#按照i里的true来选择行 列不做选择 保留true的值 print(ar[:,j])##按照j里的true来选择行 行不做选择 保留true的值 print(‘-------‘) #布尔值索引:以布尔型的矩阵去做删选 print(ar>5,type(ar>5)) print(ar[ar>5])
1 import numpy as np 2 print(np.random.normal(size=(4,4))) 3 #生成一个标准正态分布的4*4的样本值 4 5 #numpy.random,rand() 生成一个【0,1】之间的随机浮点数或者N维浮点数组 均匀分布 6 a = np.random.rand() 7 print(a,type(a)) 8 print(np.random.rand(4))#生成一维的随机数组包含四个 9 print(np.random.rand(2,4))#生成二维的随机数组包含八个 10 11 #numpy.random,randn() 生成一个的随机浮点数或者N维浮点数组 正态分布 12 data3 = np.random.randn(500) 13 data4 = np.random.randn(500) 14 import matplotlib.pyplot as plt 15 %matplotlib inline 16 plt.scatter(data3,data4) 17 #随机选择500个样本数值的data1 和data2 然后用plt画出其分布图 18 19 #numpy.random.randint(low,high=None,size=None,dtype=‘1‘)生成一个整数或者N维整数数组 20 #若High不为None时,取[low,high]之间的随机整数,否则取值[0,low]之间的随机整数,并且high必须大禹low 21 #dtype参数,只能是int类型 22 23 print(np.random.randint(2)) 24 print(np.random.randint(2,10)) 25 print(np.random.randint(10,size=10))#size表示10个数字 26 print(np.random.randint(10,size=(2,5)))#size表示数组类型 一维二维
import os os.chdir(‘C:/Users/11786/Desktop‘) #存储数据文件 .npy文件 ar = np.random.rand(5,5) print(ar) np.save(‘text.npy‘,ar) #要谨记save()函数的格式,前面参数为存储的文件名 后面为存储的数据 print(‘finished‘) #读取文件 .npy文件 ar_load =np.load(‘text.npy‘) print(ar_load) ar = np.random.rand(5,5) print(ar) np.savetxt(‘save_txt.txt‘,ar,delimiter=‘,‘,fmt=‘%.2f‘)#delimiter参数为分隔号的类型 fmt参数为存储的类型 savetxt存储为txt文件 print(‘finished‘) ar_loadtxt = np.loadtxt(‘save_txt.txt‘,delimiter=‘,‘)#loadtxt为加载文件类型为txt print(ar_loadtxt)
以上代码为学习参考使用 如有侵权 请联系作者删除
标签:二维 模块 标准 缓冲 二维数组 维数 学习 结果 imp
原文地址:https://www.cnblogs.com/sunshineboy0307/p/14054002.html