Python关于numpy的使用总结
程序员文章站
2024-01-16 22:59:58
Python关于numpy的使用总结
#24,sorted排序
ll=[8,0,3,6,1,0,5,3,8,9]
sorted(ll,revers...
Python关于numpy的使用总结
#24,sorted排序 ll=[8,0,3,6,1,0,5,3,8,9] sorted(ll,reverse=True) #降序 sorted(ll,reverse=False) -------------------------------------------------------------- #25,linalg.svd 奇异值分解 A=np.mat([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]]) U,S,VT=np.linalg.svd(A) U S VT -------------------------------------------------------------- #26,random.rand A=np.mat([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]]) A[:,1] rr=np.random.rand(3,3) #随机获取3*3个0-1之间的数字 rr rr-0.5 2*(rr-0.5) -------------------------------------------------------------- #27,arange delta=0.25 x=np.arange(-3.0,3.0,delta) #获取指定起始位置,指定步长的一系列数 x -------------------------------------------------------------- #28,nonzero() x=[[1,0,0,0,2],[0,0,3,0,0]] x nz=np.nonzero(x)#函数返回矩阵中非0元素的位置 nz #nz返回值的意思:第一行是所有非零数所在行值,第二行是所有非零数所在列值 nz[0] -------------------------------------------------------------- #29,获取指定位置的元素 A=np.mat([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]]) sample=A[0,:] #获取第0行的所有元素 sample sample[0] A=np.mat([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]]) ind=[0,1,3]#根据ind序列索引获取矩阵A中的数据 ing=[0,2,1] A[ind,ing] -------------------------------------------------------------- #30,zip ll=[1,2,3,4,5,6] ll[3:6]+ll[0:3] #可以互换指定区域的位置 l1=[1,2,3] l2=[4,5,6] for x,y in zip(l1,l2): #成对获取x,y的值 print(x,y) -------------------------------------------------------------- #31,chr函数,获取指定字符 for i in range(65,70): print(np.str(chr(i))) -------------------------------------------------------------- #32,random.shuffle ll=[[i] for i in range(9)] ll np.random.shuffle(ll) #shuffle 函数随机打乱列表中的元素顺序 ll -------------------------------------------------------------- #33,vdotd点积,返回两个向量的点积 ll=[1,2,3] l2=[4,5,6] ll=[l1,l2] np.vdot(l1,l2) np.dot(l1,l2) np.mat(l1)*np.mat(l2).T np.mat(ll) #vdot和dot的区别 #对于向量来说,他们两个的点积结果是相同的; #对于矩阵来说,dot是矩阵的点积,而vdot是对应位置的元素乘积求和 --------------------------------------------------------------. #34,次方的计算 3*2**2 #次方的优先级较高 -------------------------------------------------------------- #35 ,max函数 ll=[3,4,6,2,89,9,3,2] max(ll) l2=[[3,4,5,6,3,89,3],[4,6,3,2,92,2,4]] max(l2[0]) max(l2) -------------------------------------------------------------- #36,mgrid函数,开始值,结束值, np.mgrid[-5:5:3j] np.mgrid[-5:5:3] np.mgrid[-5:5:3j,-5:5:3j] np.mgrid[-5:5:3,-5:5:3] -------------------------------------------------------------- #37,ogrid函数 np.ogrid[-5:5:3j] np.ogrid[-5:5:3] np.ogrid[-5:5:3j,-5:5:3j] np.ogrid[-5:5:3,-5:5:3] #ogrid和mgrid不同的是一个数据阵,一个的第三个参数如果是实数说明是步长,如果是虚数,ogrid第一各部分产生一列,第二部分产生一行多列 -------------------------------------------------------------- #38,random函数 print(np.random.seed(1)) np.random.uniform(-1,1,5) np.random.random() np.random.random(5) np.random.rand(2,3) np.random.randint(5,10) np.random.randint(5,10,size=(5,5)) -------------------------------------------------------------- #39,tofile,fromfile a=np.arange(0,12) a.shape=3,4 a a.tofile("a.bin") b=np.fromfile("a.bin",dtype=np.float) b a.dtype b=np.fromfile("a.bin",dtype=np.int32) b b.shape=3,4 b #Note:(1) 读入的时候设置正确的dtype和shape 才能保证数据一致,并且tofile函数不管数组 # 的排列顺序是c语言格式的韩式Fortran语言格式,统一c语言输出。 #(2)sep关键字参数:此外如果fromfile和tofile指定sep关键字参数的话,数组 # 将以文本格式输入输出[可以使用notepad++]打开查看,不过数据是一行显示 -------------------------------------------------------------- #40,numpy.load 和numpy.save a=np.arange(12) b=np.add.accumulate(a) c=a+b f=open("result.npy","wb") np.save(f,a) np.save(f,b) np.save(f,c) f.close() f=open("result.npy","rb") np.load(f) np.load(f) np.load(f) #Note ;(1)文件要保存为.npy文件类型,否则会出错 #(2)保存为numpy专用二进制格式后,就不能用notepad++打开(乱码)看了, # 如果你想将多个数组保存在一个文件中的话,可以使用numpy.saves函数,该 # 函数的第一个参数是文件名,其后面都是需要保存的数组,也可以使用关键词 #起一个名字,非关键词参数在传递数组时会自动起名为arr_0、arr_1、arr_2、 #输出的是以个压缩文件 a=np.array([[1,2,3],[4,5,6]]) b=np.arange(0,1.0,0.1) c=np.sin(b) np.savez("result.npz",a,b,sin_array=c) r=np.load("result.npz") r["arr_0"] r["arr_1"] r["sin_array"] -------------------------------------------------------------- #41,permuta tion函数 np.random.permutation(10) np.random.permutation([1,4,9,12]) arr=np.arange(9).reshape((3,3)) arr np.random.permutation(arr) #如果是多维数组,混淆一维 -------------------------------------------------------------- #42,complex构造复数 np.complex(0,100) np.complex(1,-1) -------------------------------------------------------------- #43,求范数 a=np.array([[complex(1,-1),3],[2,complex(1,1)]]) a np.linalg.norm(a,ord=2) np.linalg.norm(a,ord=1) np.linalg.norm(a,ord=np.inf)