import numpy as np import numpy.linalg as linalg #逆矩阵 w=np.zeros(5)#输出一维数组,初始值为0 print(w) ww=np.zeros((2,3)) #使用行列元组创建一个2D数组,初始值为0 print(ww) d3=np.zeros((3,4,5)) print(d3) print(type(d3)) #如果希望创建的数组包含的元素的值不是0或1,则可采用伪随机数做为初值。使用random模块中的rand和randn,下面的例子生成了0-1直接的正的随机数和包含了均值0和方差1的单变量正态分(高斯分布), uniform_distribution=np.random.rand(3,4) print(“一致分布:\n”,uniform_distribution) normal_distribution=np.random.randn(3,4) print(“高斯分布:\n”,normal_distribution) #有时,numpy数组需要行列转换,我们称为reshape,前面我们使用了np.zeros、np.ones和随机数创建数组,也可以使用np.arange()函数来创建数组。 g=np.arange(24) print(g) print(“Rank”,g.ndim) g.shape=(6,4) print(g) print(“Rank:”,g.ndim) g2=g.reshape(4,6) print(g2) print(“Rank:”,g2.ndim) #np.ravel()函数则把转换后数组转回一个新的一维数组,值不变, g=np.arange(24) g2=g.reshape(4,6) print(g2) print(g2.ravel()) #矩阵运算 a = np.array([14, 23, 32, 41]) b = np.array([5, 4, 3, 2]) print(“a + b =”, a + b) print(“a - b =”, a - b) print(“a * b =”, a * b) print(“a / b =”, a / b) print(“a // b =”, a // b) print(“a % b =”, a % b) print(“a ** b =”, a ** b)
a=np.array([[1,2,3],[4,5,6]]) print(a) print(“mean=”,a.mean()) for func in (a.min,a.max,a.sum,a.prod,a.std,a.var): print(func.name,"=",func()) #输出某个参数轴上的统计数据 c=np.arange(24).reshape(2,3,4) print(“c:\n”,c) axis_0=c.sum(axis=0) # sum across matrices print(“sum across matrices:\n”,axis_0) axis_1= c.sum(axis=1) # sum across rows print(“sum across rows:\n”,axis_1) axis_all=c.sum(axis=(0,2)) print(“sum across matrices and columns:\n”,axis_all) #一维数组操作和python数组类似 a = np.array([1, 5, 3, 19, 13, 7, 3]) print(“a[3]=”,a[3]) print(“a[2:5]=”,a[2:5]) print(“a[2:-1]=”, a[2:-1]) print(“a[:2]=”,a[:2]) print(“a[2::2]=” ,a[2::2]) print(“a[::-1]=”,a[::-1]) #多维数组索引操作 b = np.arange(48).reshape(4, 12) print(“b=”,b) print(“b[1,2]=”,b[1,2]) print(“b[1,:]=” ,b[1,:]) print(“b[:,1]=”,b[:,1]) print(“b[1:2, :]=”,b[1:2, :]) #矩阵t的转置: t.transpose和t.T是一样的效果 t=np.arange(24).reshape(4,2,3) print(“t=”,t) t1=t.transpose((1,2,0)) print(“t1=”,t1) t2=t.transpose() print(“t2=”,t2) print(“t2.shape:”,t2.shape) #矩阵点积 n1 = np.arange(10).reshape(2, 5) print(“n1=”,n1) n2 = np.arange(15).reshape(5,3) print(“n2=”,n2) n1_dot_n2 = n1.dot(n2) print(“矩阵点积:\n”,n1_dot_n2) #逆矩阵 m3=np.array([[1,2,3],[5,7,11],[21,29,31]]) print(“m3=”,m3) print(“m3逆矩阵=”,linalg.inv(m3)) print(“m3伪逆矩阵=”,linalg.pinv(m3))