Numpy 中的線形代數模組

2021-08-19 23:28:43 字數 2584 閱讀 9366

主要為將來的張量(tensor)計算打基礎

numpy 包包含numpy.linalg模組,提供線性代數所需的所有功能,主要功能有下

dot                     兩個陣列的點積

vdot 兩個向量的點積

inner 兩個陣列的內積

matmul 兩個陣列的矩陣積

1 點積 numpy.dot()

對於一維陣列(向量),相當於內積;對於二維陣列(矩陣),相當於矩陣乘法;對於多維陣列(張量),它是a的最後乙個軸上的和與b的倒數第二個軸的乘積。

import numpy as np

a = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])

b = np.array([[[2,4],[3,6]],[[4,8],[5,10]]])

c = np.dot(a,b)

print(a)

print(b)

print()

print(c)

# 輸出

[[[1 2]

[3 4]]

[[5 6]

[7 8]]]

[[[ 2 4]

[ 3 6]]

[[ 4 8]

[ 5 10]]]

[[[[ 8 16]

[ 14 28]]

[[ 18 36]

[ 32 64]]]

[[[ 28 56]

[ 50 100]]

[[ 38 76]

[ 68 136]]]]

對於二階以下的都很好理解,這裡畫圖舉例乙個(2,2,2)與(2,2,2)的np.dot的結果:

2 向量點積 vdot()

import numpy as np 

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

b = np.array([[11,12],[13,14]])

print np.vdot(a,b)

#輸出130

ez

3 內積 numpy.inner()

對於一維陣列,返回向量內積

對於高維陣列,先將高維陣列分成多個一維陣列,再依次做向量內積:

import numpy as np

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

b = np.array([[11, 12], [13, 14]])

c = np.inner(a,b)

print (a)

print(b)

print(c)

#輸出[[1 2]

[3 4]]

[[11 12]

[13 14]]

[[35 41]

[81 95]]

#計算過程如下

1*11+2*12, 1*13+2*14

3*11+4*12, 3*13+4*14

4 矩陣乘積 numpy.matmul()

numpy.matmul()函式返回兩個陣列的矩陣乘積。 雖然它返回二維陣列的正常乘積,但如果任一引數的維數大於2,則將其視為存在於最後兩個索引的矩陣的棧,並進行相應廣播。

另一方面,如果任一引數是一維陣列,則通過在其維度上附加 1 來將其提公升為矩陣,並在乘法之後被去除。

發現與inner()結果是一樣的…

#乙個是一維的陣列

import numpy as np

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

b = np.array([11, 12])

c = np.inner(a,b)

print(a)

print(b)

print()

print(c)

#輸出[[1 2]

[3 4]]

[1112]

[3581]

#乙個是多維陣列

import numpy as np

a = np.arange(8).reshape(2,2,2)

b = np.arange(4).reshape(2,2)

c = np.matmul(a,b)

print(a)

print()

print(b)

print()

print(c)

#輸出[[[0 1]

[2 3]]

[[4 5]

[6 7]]]

[[0 1]

[2 3]]

[[[ 2 3]

[ 6 11]]

[[10 19]

[14 27]]]

#計算過程是將a分成兩個矩陣,依次與第二個矩陣相乘:

[[[0 1] * [[0 1]

[2 3]] [2 3]],

[[4 5] * [[0 1]

[6 7]] [2 3]]]

參考:

numpy之隨機數模組 random模組

一 二項分布 隨機數 模組為random模組 生成服從特定統計規律的隨機數序列 1.二項分布 binomial 就是重複n次的伯努利實驗,每次實驗只有兩種可能的結果,而且兩種結果發生與否相互獨立。事件發生與否的概率在每次實驗中都是保持不變的 numpy中實現 np.random.binomial n...

Python中Numpy庫的線性代數

cible 學習筆記 numpy 定義了 matrix 型別,使用該 matrix 型別建立的是矩陣物件,它們的加減乘除運算預設採 用矩陣方式計算,因此用法和matlab十分類似。但是由於 numpy 中同時存在 ndarray 和 matrix 物件,因此使用者很容易將兩者弄混。這有違 pytho...

Numpy模組的使用

pip install numpy i numpy numerical python 是 python語言的乙個擴充套件程式庫,支援任意維度的陣列和矩陣操作,此外也針對陣列運算提供了大量的內建方法。numpy 是乙個執行速度非常快的數學庫,主要用於陣列計算,包含 乙個強大的n維陣列物件 ndarra...