numpy
数据计算的基础库
定义了一种基础结构ndarray
多维矩阵操作
import numpy as np
Numpy
keywords: 开源 数据计算扩展
functions: ndarray 多维操作 线性代数
#encoding=utf-8 ''' 因为python的数据类型比较灵活,[]内可以放下各种,但每次计算前先要判断所以速度较慢 numpy中可以把list内容指定为某一种数据类型,所以比较快 ''' import numpy as np from numpy.linalg import * def main(): lst = [[1, 3, 5], [2, 4, 6]] print(type(lst)) np_lst=np.array(list) print(type(np_lst)) np_lst=np.array(lst,dtype=np.float)#属性dtype可指定元素唯一的类型 #bool,int,int8,int16,int32,int64,int128,uint8,uint16,uint32,uint64,uint128,float,float16/32/64,complex64/128,str等 # 其中uint是不带符号数,complex是复数 print(np_lst.shape)#得(2L,3L),表示2行3列 print(np_lst.ndim)#得2,表示维度 print(np_lst.dtype)#得float64,因为float默认是64位的 print(np_lst.itemsize)#得8,因为float64占8个字节 print(np_lst.size)#得6,因为一共有6个元素 #2 numpy常用Array print(np.zeros([2, 4]))#得2行4列的元素都是0的矩阵,常用作初始化 print(np.ones([3, 5]))#得3行5列的元素都是1的矩阵 print("Rand:") print(np.random.rand(2,4))#得2行4列随机数矩阵,这里的随机数都是均匀分布的,0~1之间的 print(np.random.rand())#得一个随机数 print("RandInt:")#得一个随机的整数, print(np.random.randint(1,10,3))#参数不能为空,齐总1,10表范围 第三个参数表示个数 print("Randn:")#得一个标准正态分布的随机数 print(np.random.randn(2,4))#得一个2行4列的正态分布的随机数矩阵 print("Choice:")#得一个在可选范围内的随机 print(np.random.choice([10,20,30]))#在10,20,30这三个数中随机选择一个数 print("Distribute:")#可以得各种分布的数,比如下面 print(np.random.beta(1,10,100))#得alpha=1,beta=10的Beta分布的0到1之间的数字100个 #3 numpy常用操作 print(np.arange(1,11).reshape([2,-1]))#得1到11(含1不含11)的等差数列,reshape为2行5列(其中5可缺省为-1) lst=np.arange(1,11).reshape([2,-1]) print("Exp:") print(np.exp(lst))#得e指数操作的结果,lst每个元素为幂指数 print("Exp2:") print(np.exp2(lst))#得2的指数操作的结果,lst每个元素为幂指数 print("Sqrt:") print(np.sqrt(lst))#得对lst每个元素进行开平方的结果 print("Sin:") print(np.sin(lst))#得对lst每个元素进行三角函数的结果 print("Log:") print(np.log(lst))#得对lst每个元素进行对数的结果 lst=np.array([[[1,2,3,4], [4,5,6,7]], [[7,8,9,10], [10,11,12,13]], [[14,15,16,17], [18,19,20,21]]]) print("Sum") print(lst.sum(axis=0))#axis与数组维度有关系,不写axis时候默认不分维度所有元素相加的和 #axis=0是只对最外层数组(即分成3个数组的相应元素的算法)进行sun操作,结果为[[22 25 28 31] [32 35 38 41]]其中1+7+14=22;2+8+15=25 print(lst.sum(axis=1))#axis=1是再进一层(即分成两个数组相应元素的算法),结果为[[ 5 7 9 11] [17 19 21 23] [32 34 36 38]] 其中1+4=5;2+5=7 print(lst.sum(axis=2))#axis=2是再再进一层,结果为[[10 22] [34 46] [62 78]]其中1+2+3+4=10;4+5+6+7=22 print("Max") print(lst.max(axis=1))#axis与数组维度有关系,不写axis时候默认不分维度所有元素的最大值 #axis=0,1,2含义和上面类似 print("Min") print(lst.min(axis=0)) lst1= np.array([10,20,30,40]) lst2= np.array([4, 3, 2, 1]) print("Add") print(lst1 + lst2)#得[14 23 32 41] print("Sub") print(lst1 - lst2) # 得[ 6 17 28 39] print("Mul") print(lst1 * lst2) # 得[40 60 60 40] print("Div") print(lst1 / lst2) # 得[ 2.5 6.66666667 15. 40. ] print("Square") print(lst1**2) # 得[ 100 400 900 1600] print("Dot")#点乘,即矩阵相乘,a矩阵的第一行元素分别乘以b矩阵的第一列元素 的和为结果的第一行第一列的一个元素 print(np.dot(lst1.reshape([2,2]),lst2.reshape([2,2]))) # 得[[ 80 50] [200 130]]即80=10*4+2*2 print("Concatenate")#给numpy中的array元素追加 print(np.concatenate((lst1,lst2),axis=0)) # 得[10 20 30 40 4 3 2 1] print("Vstack") # 给numpy中的array元素纵向追加 print(np.vstack((lst1,lst2)))#得[[10 20 30 40] [ 4 3 2 1]] print("Hstack") # 给numpy中的array元素横向追加 print(np.hstack((lst1, lst2)))#得[10 20 30 40 4 3 2 1] print("Split") # 给numpy中的array元素分开 print(np.split(lst1,2))#分成2份,得[array([10, 20]), array([30, 40])] print("Copy") # 给numpy中的array进行拷贝 print(np.copy(lst1)) #4 numpy矩阵操作与线性方程组liner print("Eye")#线性代数中的单位矩阵 print(np.eye(3))#得[[ 1. 0. 0.][ 0. 1. 0.][ 0. 0. 1.]] lst=np.array([[1,2],[3,4]]) print("Inv:")#矩阵的逆,AB=BA=E ,则我们称B是A的逆矩阵 print(inv(lst))#得[[-2. 1. ] [ 1.5 -0.5]] print("T:") # 转置矩阵,将矩阵的行列互换得到的新矩阵称为转置矩阵 print(lst.transpose()) # 得[[1 3] [2 4]] print("Det:") #求行列式,定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A | print(det(lst)) # 得-2.0=1*4-2*3(仅对应二阶) print("Eig") # 特征值(第一个array)和特征向量(第二个array) print(eig(lst)) # 得(array([-0.37228132, 5.37228132]), array([[-0.82456484, -0.41597356],[ 0.56576746, -0.90937671]])) y=np.array([[5.],[7.]]) print("Solve")#可以用numpy直接解方程组x+2y=5;3x+4y=7 print(solve(lst,y))#得[[-3.] [ 4.]] #5 numpy其它应用简介 print("FFT:") # 快速傅里叶变换 (fast Fourier transform),信号处理领域常用到的一个概念 print(np.fft.fft(np.array([1,1,1,1,1,1,1,1]))) # 得[ 8.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] print("Coef:") # 皮尔逊相关系数( Pearson correlation coefficient)是数据领域中常用到的系数 # 在统计学中,用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。 print(np.corrcoef([1,0,1],[0,2,1]))#得[[ 1. -0.8660254] [-0.8660254 1.]] print("Poly:")#生成一元多次函数 print(np.poly1d([2,1,3]))#得2 x的2次 + 1 x + 3 #登陆官网查更加细致的api if __name__=='__main__': main()
numpy
关键词: 开源 数据计算扩展
功能: ndarray 多维操作 线性代数
官网: http://www.numoy.org/
numpy
六大工具:
六大工具之一的NumPy:
numpy的简介
numpy
关键词: 开源 数据计算扩展
功能: ndarray 多维操作 线性代数
官网: http://www.numoy.org/
numpy的作用
numpy的作用
keywords: 开源 数据计算扩展
functions: ndarray 多维操作 线性代数
数据分析用的各种包
numpy官网
numpy
功能:ndarray 多维操作
http://www.numpy.org/