[云炬python3玩转机器学习笔记] 3-7Numpy中的矩阵运算
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                [云炬python3玩转机器学习笔记] 3-7Numpy中的矩阵运算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                numpy.array中的運算
給定一個向量,讓向量中每一個數乘以2
 a=(0,1,2)
 a*1=(0,2,4)
Universal Functions
X=np.arange(1,16).reshape([3,5]) X array([[ 1, 2, 3, 4, 5],[ 6, 7, 8, 9, 10],[11, 12, 13, 14, 15]]) X+1 array([[ 2, 3, 4, 5, 6],[ 7, 8, 9, 10, 11],[12, 13, 14, 15, 16]]) X-1 array([[ 0, 1, 2, 3, 4],[ 5, 6, 7, 8, 9],[10, 11, 12, 13, 14]]) X*2 array([[ 2, 4, 6, 8, 10],[12, 14, 16, 18, 20],[22, 24, 26, 28, 30]]) X/2 array([[0.5, 1. , 1.5, 2. , 2.5],[3. , 3.5, 4. , 4.5, 5. ],[5.5, 6. , 6.5, 7. , 7.5]]) X//2 array([[0, 1, 1, 2, 2],[3, 3, 4, 4, 5],[5, 6, 6, 7, 7]], dtype=int32) 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 array([[1. , 0.5 , 0.33333333, 0.25 , 0.2 ],[0.16666667, 0.14285714, 0.125 , 0.11111111, 0.1 ],[0.09090909, 0.08333333, 0.07692308, 0.07142857, 0.06666667]]) np.abs(X) array([[ 1, 2, 3, 4, 5],[ 6, 7, 8, 9, 10],[11, 12, 13, 14, 15]]) np.sin(X) array([[ 0.84147098, 0.90929743, 0.14112001, -0.7568025 , -0.95892427],[-0.2794155 , 0.6569866 , 0.98935825, 0.41211849, -0.54402111],[-0.99999021, -0.53657292, 0.42016704, 0.99060736, 0.65028784]]) np.cos(X) array([[ 0.54030231, -0.41614684, -0.9899925 , -0.65364362, 0.28366219],[ 0.96017029, 0.75390225, -0.14550003, -0.91113026, -0.83907153],[ 0.0044257 , 0.84385396, 0.90744678, 0.13673722, -0.75968791]]) np.tan(X) array([[ 1.55740772e+00, -2.18503986e+00, -1.42546543e-01,1.15782128e+00, -3.38051501e+00],[-2.91006191e-01, 8.71447983e-01, -6.79971146e+00,-4.52315659e-01, 6.48360827e-01],[-2.25950846e+02, -6.35859929e-01, 4.63021133e-01,7.24460662e+00, -8.55993401e-01]]) np.exp(X) array([[2.71828183e+00, 7.38905610e+00, 2.00855369e+01, 5.45981500e+01,1.48413159e+02],[4.03428793e+02, 1.09663316e+03, 2.98095799e+03, 8.10308393e+03,2.20264658e+04],[5.98741417e+04, 1.62754791e+05, 4.42413392e+05, 1.20260428e+06,3.26901737e+06]]) np.power(3,X) array([[ 3, 9, 27, 81, 243],[ 729, 2187, 6561, 19683, 59049],[ 177147, 531441, 1594323, 4782969, 14348907]], dtype=int32) 3**X array([[ 3, 9, 27, 81, 243],[ 729, 2187, 6561, 19683, 59049],[ 177147, 531441, 1594323, 4782969, 14348907]], dtype=int32) np.log(X) array([[0. , 0.69314718, 1.09861229, 1.38629436, 1.60943791],[1.79175947, 1.94591015, 2.07944154, 2.19722458, 2.30258509],[2.39789527, 2.48490665, 2.56494936, 2.63905733, 2.7080502 ]]) np.log2(X) array([[0. , 1. , 1.5849625 , 2. , 2.32192809],[2.5849625 , 2.80735492, 3. , 3.169925 , 3.32192809],[3.45943162, 3.5849625 , 3.70043972, 3.80735492, 3.9068906 ]]) np.log10(X) array([[0. , 0.30103 , 0.47712125, 0.60205999, 0.69897 ],[0.77815125, 0.84509804, 0.90308999, 0.95424251, 1. ],[1.04139269, 1.07918125, 1.11394335, 1.14612804, 1.17609126]])矩陣運算
A=np.arange(4).reshape(2,2) A array([[0, 1],[2, 3]]) B=np.full((2,2),10) B array([[10, 10],[10, 10]]) A+B array([[10, 11],[12, 13]]) A-B array([[-10, -9],[ -8, -7]]) A*B array([[ 0, 10],[20, 30]]) A/B array([[0. , 0.1],[0.2, 0.3]]) A.T #第一行變第一列,低行變第二列 array([[0, 2],[1, 3]]) C = np.full((3,3),666) A+C ---------------------------------------------------------------------------ValueError Traceback (most recent call last)<ipython-input-48-e9ee25e268b8> in <module> ----> 1 A+CValueError: operands could not be broadcast together with shapes (2,2) (3,3) A.dot(C) #乘法 ---------------------------------------------------------------------------ValueError Traceback (most recent call last)<ipython-input-49-36f3f9c6ed4d> in <module> ----> 1 A.dot(C)ValueError: shapes (2,2) and (3,3) not aligned: 2 (dim 1) != 3 (dim 0)向量和矩陣的運算
v=np.array([1,2]) A array([[0, 1],[2, 3]]) v+A array([[1, 3],[3, 5]]) A.shape[0] 2 np.vstack([v]*A.shape[0])#? array([[1, 2],[1, 2]]) np.vstack([v]*A.shape[0])+A array([[1, 3],[3, 5]]) np.tile(v,(2,1))# 行2磁,列1次 array([[1, 2],[1, 2]]) np.tile(v,(2,1))+A array([[1, 3],[3, 5]]) v array([1, 2]) A array([[0, 1],[2, 3]]) v*A array([[0, 2],[2, 6]]) v.dot(A) #滿足矩陣乘法的定義 array([4, 7]) A.dot(v) #自動識別成行向量或列向量 array([2, 8])矩陣的逆
A array([[0, 1],[2, 3]]) np.linalg.inv(A) #逆矩陣 array([[-1.5, 0.5],[ 1. , 0. ]]) invA = np.linalg.inv(A) #逆矩陣,只有方陣才有逆矩陣 A.dot(invA) array([[1., 0.],[0., 1.]]) X=np.arange(16).reshape((2,8)) X array([[ 0, 1, 2, 3, 4, 5, 6, 7],[ 8, 9, 10, 11, 12, 13, 14, 15]]) np.linalg.inv(X) #逆矩陣 ---------------------------------------------------------------------------LinAlgError Traceback (most recent call last)<ipython-input-75-5122d6b32d90> in <module> ----> 1 np.linalg.inv(X) #逆矩陣<__array_function__ internals> in inv(*args, **kwargs)~\anaconda3\lib\site-packages\numpy\linalg\linalg.py in inv(a)538 a, wrap = _makearray(a)539 _assert_stacked_2d(a) --> 540 _assert_stacked_square(a)541 t, result_t = _commonType(a)542 ~\anaconda3\lib\site-packages\numpy\linalg\linalg.py in _assert_stacked_square(*arrays)201 m, n = a.shape[-2:]202 if m != n: --> 203 raise LinAlgError('Last 2 dimensions of the array must be square')204 205 def _assert_finite(*arrays):LinAlgError: Last 2 dimensions of the array must be square pinvX=np.linalg.pinv(X) #偽逆矩陣 pinvX.shape (8, 2) X.dot(pinvX) #結果為單位矩陣 array([[ 1.00000000e+00, -2.49800181e-16],[ 6.66133815e-16, 1.00000000e+00]])總結
以上是生活随笔為你收集整理的[云炬python3玩转机器学习笔记] 3-7Numpy中的矩阵运算的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: [云炬python3玩转机器学习笔记]
- 下一篇: 当了几年程序员,是时候考虑以后的发展了
