python的Numpy之矩陣操作

2021-08-02 12:25:16 字數 4960 閱讀 7323

0.基礎知識篇

1.匯入numpy包

2.建立矩陣

3.矩陣的基本屬性

4.矩陣的基本方法

5.建立預設矩陣

6.矩陣運算

7.建立等差和等比數列矩陣

8.擴充套件矩陣函式tile()

9.求矩陣最小值,最大值,均值:min,max,mean

10.行列式計算

0.基礎知識篇

numpy的主要操作物件是多維陣列。多維陣列的維度叫軸(axes),軸的個數叫秩(rank),例如三維陣列的秩就是3.

1.匯入numpy包

要進行numpy的操作,必須先導入numpy包:

import numpy as np

2.建立矩陣

建立矩陣 一般用到 兩種方法:

matrix

或array 

matrix:

如建立矩陣:

矩陣行之間用分號間隔

import numpy as np

a = np.matrix('1 2 3 ;4 5 6 ; 1 1 0 ')

print(a)

列印結果:

[[1 2 3]

[4 5 6]

[1 1 0]]

array:

from numpy import *

c = array( [ [1,2], [3,4] ])

print(c)

print(c.dtype)

array 後 可跟乙個 dtype 引數,用於指定 array 中的內容。預設情況 dtype 為 int32 。dtype還可以設定為 float 和 complex(表示複數)

from numpy import *

c = array( [ [1,2], [3,4] ] ,dtype =complex)

print(c)

列印結果:

[[ 1.+0.j  2.+0.j]

[ 3.+0.j  4.+0.j]]

3.矩陣的基本屬性(使用與matrix 和 array)

如有矩陣a:

(1)b = a.t       #表示矩陣a的轉置矩陣為b

(2)b = a.i        #表示矩陣a的逆矩陣為b

(3)b = a.h      #表示複數矩陣a的共軛矩陣為b

(4)a.ndim      #返回陣列秩,二維的秩就是2,三維的秩就是3

(5)a.shape     #返回矩陣的行列,如 m行n列的矩陣,shape返回就是(m,n),因此 a.shape[0]返回矩陣的行,a.shape[1] 返回矩陣的列

(6)a.dtype       #返回矩陣元素型別

(7)a.size         #返回矩陣的元素總數目

(8)a.itemsize      #返回矩陣中每個元素的大小

4.矩陣的基本方法(使用與 matrix 和 array)

若有矩陣a:

(1)a.gett()  #返回本身的轉置矩陣

(2)a.geti()   #返回本身的逆矩陣

(3)a.geta()  #返回自己,但是作為ndarray陣列返回。

(4)a.geta1() #返回自己,但是全部變為一維陣列返回

import numpy as np

a = np.matrix('1 1 ;2 2')

print(a.geta1())

列印結果:[1 1 2 2]

(5)a.argsort:返回的是矩陣的值從小到大(或從大到小)的索引值

from numpy import *

a = array([[1,2],[4,3]])

print('矩陣a:')

print(a)

print('從小到大:')

print(argsort(a))

print('從大到小:')

print(argsort(-a))

列印結果:

矩陣a:

[[1 2]

[4 3]]

從小到大:

[[0 1]

[1 0]]

從大到小:

[[1 0]

[0 1]]

以從小到大為例:第一行的 [0,1] 表示最小的為索引值為0的元素,次小的為索引值為1的元素。

5.建立預設矩陣

(1)zeros()   :建立全零矩陣,如:a = zeros((3,4))  表示此全0矩陣是3行4列的

(2)ones()    :建立全1矩陣

from numpy import *

a = eye(3,k=1)

print(a)

列印結果:

[[ 0. 1. 0.]

[ 0. 0. 1.]

[ 0. 0. 0.]]

k<0 則是對角線下一行為1,其餘為0

6.矩陣運算

(1)矩陣加減法:若有矩陣a 和 b,則矩陣加減分別為: a+b , a - b

(2)矩陣乘法:c = dot(a,b)

(3)矩陣中每個元素n次方:c = a**n    (其中a 為矩陣,n為n次方)

7.建立等差和等比數列矩陣

(1)建立等差數列:linspace

from numpy import *

x1 = linspace(1,10,10,dtype=int32)

print(x1)

第乙個引數為等差數列起始項,第二個引數為等差數列最後一項,第三個引數為一共有多少項

dtype可以不寫,預設的是浮點型 float64

(2)建立等比數列:logspace

logspace建立的等比數列的起始項和結束項都是以10為底的。如 logspace(0,3,4)表示起始項為10^0,結束項為10^3,共有4個數

from numpy import *

x1 = logspace(0,3,4)

print(x1)

結果:[    1.    10.   100.  1000.]

同樣可以對 dtype進行設定

8.擴充套件矩陣函式tile()

tile( matrix,(r,c) )  :表示以矩陣 matrix 為乙個單位a,(r,c)表示擴充套件的矩陣的行列

如有 矩陣a=[ 1,2,3] ,

**展示:

from numpy import *

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

b = tile(a,(2,1))

print(b)

列印結果:

[[1 2 3]

[1 2 3]]

當然 tile中的(r,c)也可以取其他的數,道理是一樣的。

9.求矩陣最小值,最大值,均值:min,max,mean

無論是min(),max(),mean(),都有乙個重要引數 axis,以乙個 m*n矩陣a舉例:

當axis 不設定值:返回乙個實數,表示矩陣中的 最小值/最大值/平均值

當axis =0:返回每列中的 最小值/最大值/平均值 ,返回乙個 1*n 矩陣

當axis = 1:返回每行中的 最小值/最大值/平均值 ,返回乙個 m*1矩陣

以 mean()舉例:

from numpy import *

a = array([[1,2,3],[7,8,9]])

print(a)

print('.............')

a = a.mean(axis=0)

print('每列的平均值:')

print(a)

列印結果:

[[1 2 3]

[7 8 9]]

.............

每列的平均值:

[ 4.  5.  6.]

同樣有 axis操作的函式還有求和函式 sum()

10.行列式計算(方法適合於matrix 和 array)

用到 numpy 下的linalg模組的 det 方法:

import numpy as np

a = np.matrix('2 0 0;0 2 0; 0 0 2')

print(a)

b = np.linalg.det(a)

print(b)

[[2 0 0]

[0 2 0]

[0 0 2]]

8.0

Python中的Numpy矩陣

與使用陣列一樣,需要從numpy中匯入matrix或者mat模組 from numpy import matrix,mat這裡使用mat建立乙個矩陣 ss.t但是這裡的轉置並沒有改變原變數中的值,如果需要使用,需要新建立乙個變數進行賦值使用。如果需要將兩個矩陣的每個元素對應相乘時使用numpy中的m...

python 矩陣庫 NumPy矩陣庫

numpy 矩陣庫 numpy 包包含乙個 matrix庫numpy.matlib。此模組的函式返回矩陣而不是返回ndarray物件。matlib.empty matlib.empty 函式返回乙個新的矩陣,而不初始化元素。該函式接受以下引數。numpy.matlib.empty shape,dty...

numpy 矩陣 秩 Numpy 矩陣

機器學習中會用到大量的數學操作,而 numpy 計算庫使這些操作變得簡單,這其中就涉及到了 numpy 的矩陣操作,下面我們就來一起學習如何在 numpy 科學計算庫中進行矩陣的一些基本運算。定義矩陣使用 numpy 科學計算庫中的 mat 函式,如下所示 numpy.mat data,dtype ...