import numpy
"""
numpy.array中的运算
给定一个向量,让向量中每一个数乘以2
a =(0,1,2)
a*2 =(0,2,4)
"""
n=10
L=[i for i in range(n)]
#方法1.首先创建一个空列表,然后遍历列表中的每一个元素,*2并append进A
A=[]
for e in L:
A.append(2*e)
#方法2:利用生成表达式的方式处理,效率会变高
A=[2*e for e in L]
L=numpy.arange(n)
#方法3:利用numpy,效率会更高很多
A=numpy.array(2*e for e in L)
#方法4:支持普通不支持方法,此时的L应该为numpy创建的而不应该是普通方法创建的,效率更高
A=2*L
X=numpy.arange(1,16).reshape((3,5))
X+1#矩阵中所有元素+1
X/2#生成浮点数的除法
X//2#整除,去掉余数,只保留整数
X**2#平方
numpy.power(3,X)#求3的X次方
numpy.exp(X)#求e的X次方
"""
多矩阵进行运算
"""
A=numpy.arange(4).reshape(2,2)
B=numpy.full((2,2),10)
A+B
A-B
A*B#是两个矩阵对应元素进行相乘,除
A/B
A.dot(B)#矩阵的标准乘法,与A*B不同
A.T#转置矩阵
"""
向量和矩阵的运算
"""
v=numpy.array([1,2])#创建一个向量
v+A#就是向量和矩阵的每一行做加法
numpy.vstack([v] * A.shape[0])#进行垂直拼接
numpy.tile(v,(2,1))#行向量堆叠2次,列向量堆叠1次
v*A#向量v与A的每一行都进行相乘,元素相乘
v.dot(A)#标准相乘
"""
矩阵的逆
"""
invA=numpy.linalg.inv(A)#A的逆矩阵,此时求得是方阵
A.dot(invA)#矩阵*逆矩阵=单位矩阵
X=numpy.arange(16).reshape(2,8)
numpy.linalg.pinv(X)#对于不是方阵的矩阵,那么我们就需要使用伪逆矩阵