numpy中陣列和矩陣的區別
阿新 • • 發佈:2018-11-05
- matrix是array的分支,matrix和array在很多時候都是通用的,用哪一個都一樣;
- 如果兩個可以通用,那就選擇array,因為array更靈活,速度更快,很多人把二維的array也翻譯成矩陣。
- 相同點:索引方式相同,都可以使用a[i][j],a[i,j]進行索引
- matrix(矩陣):
- 具有相對簡單的運算子號,比如兩個matrix相乘(求內積),就是用符號*
- array(陣列):
- 1.兩個一維陣列相乘用*,對應元素相乘
-
import numpy as np a=np.array([1,2,3,4]) b=np.array([2,3,4,5]) print(a*b) print(sum(a*b)) #結果 [ 2 6 12 20] 40
- 多維陣列也可以看成矩陣,如果進行矩陣相乘(求內積),則需要用到np.dot(),如np.dot(arr.T,arr)
- 兩者轉換:
-
import numpy as np """rand函式的作用就是從標準正態分佈中返回一個或多個樣本值, 這裡返回2行3列共6個數的陣列。 標準正態分佈俗稱高斯分佈,均值為0,方差為1的正態分佈。""" arr=np.random.rand(2,3) b=np.dot(arr.T,arr) #把陣列當成矩陣,對應元素相乘求內積 #將陣列轉化成矩陣 arr_Matrix=mat(arr) #等同於arr_Matrix=matrix(arr) ,mat是matrix的縮寫 c=arr_Matrix.T * arr_Matrix #矩陣直接相乘 #將結果輸出 print("arr:\n{}\ntype(arr):{}".format(arr,type(arr))) print("陣列(矩陣)內積:\n",b) print("arr_Matrix:\n{}\ntype(arr_Matrix):{}".format(arr_Matrix,type(arr_Matrix))) print("矩陣乘積:\n",c) #比較兩者乘積是否相等 print("陣列矩陣內積=矩陣乘積:\n",b==c) #執行結果如下: arr: [[0.93383594 0.70401786 0.95323492] [0.7970047 0.21436019 0.24329003]] type(arr):<class 'numpy.ndarray'> 陣列(矩陣)內積: [[1.50726605 0.82828326 1.08406832] [0.82828326 0.54159144 0.72324611] [1.08406832 0.72324611 0.96784685]] arr_Matrix: [[0.93383594 0.70401786 0.95323492] [0.7970047 0.21436019 0.24329003]] type(arr_Matrix):<class 'numpy.matrixlib.defmatrix.matrix'> 矩陣乘積: [[1.50726605 0.82828326 1.08406832] [0.82828326 0.54159144 0.72324611] [1.08406832 0.72324611 0.96784685]] 陣列矩陣內積=矩陣乘積: [[ True True True] [ True True True] [ True True True]]