3-7 Numpy中的矩阵运算

numpy.array中的运算

给定一个向量,让向量中每一个数乘以2
a=(0,1,2)
a * 2=(0,2,4)

n=10
L = [i for i in range(n)]
2 * L
'''
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
两个L首尾衔接
'''

A=[]
for e in L:
    A.append(2 * e)

%%time
A=[]
for e in L:
    A.append(2 * e)
#310ms

%%time
A=[2*e for e in L]
#155ms

import numpy as np
%%time
A=np.array(2*e for e in L)
#15.9ms

%%time
A=2*L
#7.8ms

Universal Functions

X = np.arange(1,16).reshape((3,5))
X+1
X-1
X*2
X/2#浮点
X//2#整数
X ** 2#X^2
'''
array([[  1,   4,   9,  16,  25],
       [ 36,  49,  64,  81, 100],
       [121, 144, 169, 196, 225]], dtype=int32)
'''

X%2
'''
array([[1, 0, 1, 0, 1],
       [0, 1, 0, 1, 0],
       [1, 0, 1, 0, 1]], dtype=int32)
'''

1/X
np.abs(X)
np.sin(X)
np.exp(X)
np.power(3,X)
=3**X
#3^X

np.log(X)
#lnx
np.log2(X)

矩阵运算

A=np.arange(4).reshape(2,2)
B=np.full((2,2),10)
A+B
A*B
#对应元素进行运算

A.dot(B)
#矩阵乘法

A.T
#转置

向量和矩阵的运算

v=np.array([1,2])
v+A

'''
array([[1, 3],
       [3, 5]])
'''
#和矩阵的每一行做加法

A.shape
#(2,2)
A.shape[0]
#A的行数

np.vstack([v] * A.shape[0])
#将v向量叠了两次

np.vstack([v] * A.shape[0])+A

np.tile(v,(2,1))
#将v向量横向叠2次 纵向叠一次

v*A
'''
array([[0, 2],
       [2, 6]])
'''

v.dot(A)
'''
array([4, 7])
'''

A.dot(v)
'''
array([2, 8])
'''
#v自动变为列向量

矩阵的逆

invA=np.linalg.inv(A)
#只能对 方阵 求逆矩阵

 X=np.arange(16).reshape((2,8))
np.linalg.pinv(X)
#伪逆矩阵
'''
array([[-1.35416667e-01,  5.20833333e-02],
       [-1.01190476e-01,  4.16666667e-02],
       [-6.69642857e-02,  3.12500000e-02],
       [-3.27380952e-02,  2.08333333e-02],
       [ 1.48809524e-03,  1.04166667e-02],
       [ 3.57142857e-02, -3.46944695e-18],
       [ 6.99404762e-02, -1.04166667e-02],
       [ 1.04166667e-01, -2.08333333e-02]])
'''

你可能感兴趣的:(3-7 Numpy中的矩阵运算)