NumPy 矩陣乘法

2021-08-20 05:16:15 字數 2099 閱讀 8896

numpy 支援的幾類矩陣乘法也很重要。

你已看過了一些元素級乘法。你可以使用multiply函式或*運算子來實現。回顧一下,它看起來是這樣的:

m = np.array([[1,2,3],[4,5,6]])

m# 顯示以下結果:

# array([[1, 2, 3],

# [4, 5, 6]])

n = m * 0.25

n# 顯示以下結果:

# array([[ 0.25, 0.5 , 0.75],

# [ 1. , 1.25, 1.5 ]])

m * n

# 顯示以下結果:

# array([[ 0.25, 1. , 2.25],

# [ 4. , 6.25, 9. ]])

np.multiply(m, n) # 相當於 m * n

# 顯示以下結果:

# array([[ 0.25, 1. , 2.25],

# [ 4. , 6.25, 9. ]])

要獲得矩陣乘積,你可以使用 numpy 的matmul函式。

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

a# 顯示以下結果:

# array([[1, 2, 3, 4],

# [5, 6, 7, 8]])

a.shape

# 顯示以下結果:

# (2, 4)

b = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])

b# 顯示以下結果:

# array([[ 1, 2, 3],

# [ 4, 5, 6],

# [ 7, 8, 9],

# [10, 11, 12]])

b.shape

# 顯示以下結果:

# (4, 3)

c = np.matmul(a, b)

c# 顯示以下結果:

# array([[ 70, 80, 90],

# [158, 184, 210]])

c.shape

# 顯示以下結果:

# (2, 3)

如果你的矩陣具有不相容的形狀,則會出現以下錯誤:

np.matmul(b, a)

# 顯示以下錯誤:

# valueerror: shapes (4,3) and (2,4) not aligned: 3 (dim 1) != 2 (dim 0)

有時候,在你以為要用matmul函式的地方,你可能會看到 numpy 的dot函式。事實證明,如果矩陣是二維的,那麼dotmatmul函式的結果是相同的。

所以這兩個結果是等價的:

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

a# 顯示以下結果:

# array([[1, 2],

# [3, 4]])

np.dot(a,a)

# 顯示以下結果:

# array([[ 7, 10],

# [15, 22]])

a.dot(a) # you can call你可以直接對 `ndarray` 呼叫 `dot`

# 顯示以下結果:

# array([[ 7, 10],

# [15, 22]])

np.matmul(a,a)

# array([[ 7, 10],

# [15, 22]])

雖然這兩個函式對於二維資料返回相同的結果,但在用於其他資料形狀時,你應該謹慎選擇。你可以在matmuldot文件中詳細了解它們的差異,並找到其他 numpy 函式的鏈結。

Numpy中的矩陣乘法

對於numpy.array multiply 意思是對應位置的元素相乘 如果希望對array物件進行嚴格的矩陣乘法,必須使用numpy.dot 或者numpy.matmul 函式,這兩者是等效的 對於matrix物件上情況是相反的,必須使用np.multiply 函式。因為 過載矩陣運算規則只限於m...

numpy 陣列 矩陣乘法運算

為了區分三種乘法運算的規則,具體分析如下 import numpy as np函式作用 陣列和矩陣對應位置相乘,輸出與相乘陣列 矩陣的大小一致 1.1陣列場景 a np.arange 1,5 reshape 2,2 aarray 1,2 3,4 b np.arange 0,4 reshape 2,2...

numpy 向量 矩陣的乘法

import numpy as np一維向量與一維向量 一維向量與一維向量 vec1 np.array 1 2,3 vec2 np.array 4 5,6 np.inner 對應位置的元素相乘相加求和 res inner1 np.inner vec1,vec2 32 對應位置的元素相乘 成為新矩陣該...