机器学习 番外篇 05 numpy之矩阵运算

矩阵运算

# 给定一个向量,让所有元素*2
import numpy as np
l=np.arange(5)
a=np.array(2*e for e in l)
a
>>>array(<generator object <genexpr> at 0x10ee9e830>, dtype=object)
l
>>>array([0, 1, 2, 3, 4])
l*2
>>>array([0, 2, 4, 6, 8])
l / 2
>>>array([0. , 0.5, 1. , 1.5, 2. ])
l //2
>>>array([0, 0, 1, 1, 2])
l
>>>array([0, 1, 2, 3, 4])
np.abs(l)
>>>array([0, 1, 2, 3, 4])
np.cos(l)
>>>array([ 1.        ,  0.54030231, -0.41614684, -0.9899925 , -0.65364362])
np.exp(l)
>>>array([ 1.        ,  2.71828183,  7.3890561 , 20.08553692, 54.59815003])
np.power(3,l) # l^3
>>>array([ 1,  3,  9, 27, 81])
np.log2(l)
/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: RuntimeWarning: divide by zero encountered in log2
  """Entry point for launching an IPython kernel.

>>>array([     -inf, 0.       , 1.       , 1.5849625, 2.       ])

矩阵运算

aa=np.arange(4).reshape(2,2)
aa
>>>array([[0, 1],
       [2, 3]])
b=np.full((2,2),10)
b
>>>array([[10, 10],
       [10, 10]])
aa+b
>>>array([[10, 11],
       [12, 13]])
aa-b
>>>array([[-10,  -9],
       [ -8,  -7]])
# 矩阵乘法
aa.dot(b)
>>>array([[10, 10],
       [50, 50]])
# 矩阵转置
aa.T
>>>array([[0, 2],
       [1, 3]])

向量和矩阵的运算

v=np.array([1,2])
aa
>>>array([[0, 1],
       [2, 3]])
v+aa
>>>array([[1, 3],
       [3, 5]])
np.vstack([v]*aa.shape[0]) # [v]*2
>>>array([[1, 2],
       [1, 2]])
# 扩展
np.tile(v,(2,1))
>>>array([[1, 2],
       [1, 2]])
v*aa
>>>array([[0, 2],
       [2, 6]])
# 矩阵的逆
np.linalg.inv(aa)
>>>array([[-1.5,  0.5],
       [ 1. ,  0. ]])
# 伪逆矩阵
pinvaa=np.linalg.pinv(aa)
pinvaa
>>>array([[-1.50000000e+00,  5.00000000e-01],
       [ 1.00000000e+00,  4.21097322e-17]])

猜你喜欢

转载自blog.csdn.net/lihaogn/article/details/81304629