Python 矩陣操作

2021-08-19 21:28:10 字數 2622 閱讀 7709

numpy庫用於矩陣運算,所以一般先導入它。

from numpy import *

import numpy as np

1 矩陣建立

#建立一維陣列

a1=array([1,2,3])

#將陣列轉為矩陣

a1=mat(a1)

輸出a1:matrix([[1, 2, 3]])

當然也可以對矩陣操作:

a1.reshape(3,-1)
這會將矩陣轉為3*x的矩陣,因為只有3個元素,所以這裡x=1。

其他建立矩陣方法:

#建立3×3的0矩陣,zeros函式引數是乙個元組

data1=mat(zeros((3,3)))

#建立4×4的1矩陣,無論是zeros,還是ones都可以設定引數dtype=int/float32修改資料型別,預設是浮點

data2=mat(ones((4,4)))

#random.rand(3,3)隨機生成3×3大小值為0-1之間的陣列

data3=mat(random.rand(3,3))

#隨機生成在0-10之間生成3×3大小的整數矩陣,多加乙個引數可指定下界

data4=mat(random.randint(10,size=(3,3)))

#生成的是1-8之間的,3×5大小的整數矩陣

data5=mat(random.randint(0,10,(4,3)))

#產生乙個2*2的對角矩陣

data6=mat(eye(2,2,dtype=int))

#生成乙個對角線為1、2、3的對角矩陣

a1=[1,2,3];

a2=mat(diag(a1))

2常見矩陣運算

-矩陣相乘

#1×2的矩陣乘以2×1的矩陣,得到1×1的矩陣

#使用matrix,運算子*用於向量計算(叉乘),若是array,運算子*是數量積(點乘)

#另外可用np.dot()函式計算叉乘

a1=mat([1,2])

a2=mat([[1],[2]])

a3=a1*a2

說白了就是1×1+2×2=5。

-矩陣點乘

矩陣對應元素相乘:

a1=mat([1,2])

a2=mat([1,2])

a3=multiply(a1,a2)

輸出:matrix([[1, 4]])

-矩陣求逆和轉置

#求逆

a1=mat(random.randint(0,10,(4,4)))

a2=a1.i

#轉置a1.t

-計算矩陣對應行列的最大、最小值、和

a1=mat(random.randint(0,10,(4,4)))

#列和,這裡得到的是1*2的矩陣

a2=a1.sum(axis=0);

#行和,這裡得到的是3*1的矩陣

a3=a1.sum(axis=1);

#計算第二行所有列的和(python從0開始計數)),這裡得到的是乙個數值

a4=sum(a1[1,:]);

#計算最大、最小值和索引

#先用python內建函式

#計算a1矩陣中所有元素的最大值,這裡得到的結果是乙個數值

a1.max()

#計算第二列的最大值,這裡得到的是乙個1*1的矩陣

a2=max(a1[:,1])

#計算第二行的最大值,這裡得到的是乙個乙個數值

a1[1,:].max()

#使用numpy函式

#計算所有列的最大值,這裡使用的是numpy中的max函式,返回每列的最大值,返回值是乙個行矩陣

np.max(a1,0)

#計算所有行的最大值,返回每列最大值,返回值也是乙個矩陣,且是乙個列矩陣

np.max(a1,1)

#計算所有列的最大值對應在該列中的索引,返回行矩陣及其資料型別

np.argmax(a1,0)

#計算所有行的最大值對應在該行的索引,返回乙個列矩陣及其資料型別

np.argmax(a1,1)

#但若這麼寫,便是計算第二行中最大值對應在改行的索引,返回索引值

np.argmax(a1[1,:])

3 矩陣合併與分解

分割:

a=mat(random.randint(0,10,(4,4)))

#分割第二行第二列後的所有元素

b=a[1:,1:]

合併有倆種方式,按行和按列:

a=mat(ones((3,3))

b=mat(random.randint(0,10,(3,3)))

#按列增加,在列後面合併後增加了行數

c=vstack((a,b))

#按航增加,在行後面增加了列數

d=hstack((a,b))

python 矩陣(mat)操作

from python的numpy庫提供矩陣運算的功能,因此我們在需要矩陣運算的時候,需要匯入numpy的包。from numpy import 匯入numpy的庫函式 import numpy as np 這個方式使用numpy的函式時,需要以np.開頭。由一維或二維資料建立矩陣 from num...

python矩陣操作小例子

因為經常寫for所以感覺有點low而且執行效率不高,慢慢學習改進,這個矩陣操作例子還不錯可以學學。用python實現矩陣的加法運算和乘法運算,寫幾層for迴圈,實現矩陣加法和乘法並不困難,但關鍵是要足夠簡潔,這個可讓我費了不少腦子。先直接上 吧。矩陣表示形式 m a1,a2,a3 a4,a5,a6 ...

python中的矩陣操作

1 矩陣相乘 例 b1 mat 1,2 1 2的矩陣 b2 mat 1 2 2 1的矩陣 b3 b1 b2 print b3 2 矩陣點乘 對應元素相乘 例b1 mat 1,2 b2 mat 1,2 b3 multiply b1,b2 print b3 3 求逆矩陣 例c1 mat eye 2,2 ...