本文用于学习Python工具包Numpy的基本使用方法!!!
import numpy as np #from numpy import * #将数据存储到txt文件中 arr=np.arange(3) np.savetxt("array.txt",arr) #以矩阵或数组的形式读取txt文件中的数据 arr=np.loadtxt('array.txt') print(arr) #arange函数创建0-n的整数的数组,接受1、2、3个参数类似于range() print( np.arange(1,5,2) ) #将列表数组化 print( np.array([0,1,2,3,4]) ) #创建三维数组,可类似Execel中sheet和行列的关系 print( np.arange(24).reshape(2,3,4) ) #获取数组中的数据类型,数组元素的个数, 获取数组的维度 arr = np.array([np.arange(6),np.arange(6)]) print( arr.dtype ) print( arr.size ) print( arr.shape ) #自定义异构数据类型的数组,自定义数组各元素的数据类型 np.dtype([('name',np.str_,40),('age',np.int32),('weight',np.float32)]) print( np.array([('liyu',23,68.1)]) ) #一维数组的切片操作,从下标0-5,步长为2选取元素,负数下标翻转数组 arr = np.arange(6) print( arr[:5:2] ) print( arr[::-1] ) #多维数组的切片操作,选取第一个sheet中的所有行列 arr = np.arange(24).reshape(2,3,4) print( arr[0,::] ) print( arr[0,...] ) #用ravel函数或flatten函数展平多维数组 arr = np.arange(9).reshape(3,3) print( arr.ravel() ) print( arr.flatten() ) #多维数组的转置 4x3x2 print( arr.transpose() ) print( arr.T ) #数组的水平组合,垂直组合,深度组合(3,3)->(3,3,2) print( np.hstack((arr,arr)) ) print( np.c_[arr,arr] ) print( np.concatenate((arr,arr),axis=1) ) print( np.vstack((arr,arr)) ) print( np.concatenate((arr,arr),axis=0) ) print( np.dstack((arr,arr)) ) #数组的水平分割,垂直分割,深度分割 print( np.hsplit(arr,3) ) print( np.split(arr,3,axis=1) ) print( np.vsplit(arr,3) ) print( np.split(arr,3,axis=0) ) #NumPy数组转化为Python列表 print( arr.tolist() ) #数组加权求平均,每个元素有对应的权值 arr = np.arange(3) print( np.average(arr) ) print( np.average(arr,weights=arr) ) #算术平均、最大值、最小值、 print( np.mean(arr) ) print( arr.mean() ) print( np.max(arr) ) print( np.min(arr) ) #极差、中位数、方差、协方差、对数、 print( np.ptp(arr) ) print( np.median(arr) ) print( np.var(arr) ) print( np.mean((arr-arr.mean())**2) ) print( np.cov(arr,arr) ) print( np.log(arr) ) #从小到大排序、相邻元素的差值、平方根、指数、阶乘、sign函数 print( np.msort(arr) ) print( np.diff(arr) ) print( np.sqrt(arr) ) print( np.exp(arr) ) print( arr.cumprod() ) print( np.sign(arr) ) #where函数返回向量中大于阈值的索引,take函数提取对应的元素 for i in range(len(arr)): indices=np.where(arr>0) np.take(arr,indices) for i,j in enumerate(arr): if i>0: print(j) print( indices ) print( np.take(arr,0) ) #linspace函数,返回在指定范围内均匀分布的数组 print( np.linspace(0,1,5) ) #argmax函数返回数组中最大值对应的下标,最小值 print( np.argmax(arr) ) print( np.argmin(arr) ) #extract函数基于生成的条件从数组中抽取元素 condition=(arr%2)==0 print( np.extract(condition,arr) ) #抽取数组中的非零元素 print( np.nonzero(arr) ) #归一化处理 print( arr/arr.sum() ) #创建单位矩阵、零矩阵、1矩阵 print( np.eye(3) ) print( np.zeros(3) ) print( np.ones(3) ) #创建矩阵,元素之间空格隔开,行之间分号隔开 Mat=np.mat('1 2 3;4 5 6;7 8 9') print( type(Mat) ) #查看矩阵对角线元素,计算迹,计算相关系数 print( Mat.diagonal() ) print( Mat.trace() ) print( np.corrcoef(Mat,Mat) ) #转置矩阵,逆矩阵,复合矩阵,创建和Mat一样的零矩阵 print( Mat.T ) print( Mat.I ) print( np.linalg.inv(Mat) ) print( np.bmat('Mat Mat;Mat Mat') ) print( np.zeros_like(Mat) ) #列求和,存储中间运算的结果 print( np.add.reduce(Mat) ) print( np.add.accumulate(Mat) ) #除法运算,除法只保留整数,除法保留小数 print( np.divide(Mat,Mat) ) print( np.true_divide(Mat,Mat) ) #模运算,remainder函数 mode函数 % 等价,fmod函数使余数的正负由被除数决定 print( np.remainder(Mat,Mat) ) print( np.fmod(Mat,2) )#第二个参数为除数 #位运算,xor不等运算符,与运算符 print( -Mat ) print( Mat^Mat ) print( np.less(np.bitwise_xor(Mat,Mat),0) ) print( (Mat&Mat)==0 ) print( np.equal(np.bitwise_and(Mat,Mat),0) ) #np.random模块产生随机数的数组 print( np.random.random(5) ) print( np.random.randint(5,size=5) ) #获得[0,1)区间内的随机数,返回2行4列的数组 print( np.random.rand(2,4) ) #np.linalg模块的函数,求解线性方程组 A=Mat b=np.ones(Mat.shape[0]) x=np.linalg.solve(A,b) print( x ) print( np.dot(A,x) ) #求解特征值和特征向量,以元组的形式返回 eigenvalues,eigenvectors=np.linalg.eig(A) #求解奇异值分解 U,Sigma,V=np.linalg.svd(A,full_matrices=False) print( U*np.diag(Sigma)*V ) #求解广义逆矩阵 print( np.linalg.pinv(A) ) #行列式 print( np.linalg.det(A) )
参考资料:
1.《Numpy学习指南》