一、创建矩阵
python
import numpy as np
#创建矩阵
a=np.arange(15).reshape(3,5)
b=np.arange(15,30).reshape(3,5)
使用arrange和reshape创建的二维数组就可以看成矩阵。
此时a和b存储的是:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
[[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]]
二、矩阵的加法
1、矩阵跟矩阵的加法
如果是两个矩阵相加,则会对应位置的元素进行相加
例如上述代码中的a和b矩阵相加:
python
print(a+b)
输出:
[[15 17 19 21 23]
[25 27 29 31 33]
[35 37 39 41 43]]
2、矩阵与变量的加法
如果是变量与矩阵相加,那么会矩阵每个元素都加一遍变量的值。
例如:
python
import numpy as np
#创建矩阵
a=np.arange(15).reshape(3,5)
e=3
print(a+e)
输出:
[[ 3 4 5 6 7]
[ 8 9 10 11 12]
[13 14 15 16 17]]
三、矩阵的减法
矩阵的减法与加法相同。
四、矩阵的乘法
-
矩阵与标量的乘法 :
当你想要将一个矩阵的每个元素都乘以一个标量(即一个单独的数)时,你可以简单地使用NumPy的广播功能。
pythonimport numpy as np # 创建一个矩阵 A = np.array([[1, 2], [3, 4]]) # 标量 scalar = 2 # 矩阵与标量的乘法 C = A * scalar print(C) # 输出: # [[2 4] # [6 8]]
-
矩阵与向量的乘法(点积/内积) :
在NumPy中,通常使用
dot
函数或@
运算符来进行矩阵与向量的乘法。但是,请注意,向量在NumPy中通常表示为一维数组,而在进行矩阵乘法时,你可能需要将其重塑为二维数组(即列向量或行向量)。python# 创建一个矩阵 A = np.array([[1, 2], [3, 4]]) # 创建一个向量(这里我们将其视为列向量) v = np.array([5, 6]) # 使用 dot 函数进行矩阵与向量的乘法 result_dot = np.dot(A, v) print(result_dot) # 输出: # [17 39] # 或者使用 @ 运算符(Python 3.5+) result_at = A @ v print(result_at) # 输出与上面相同
注意:如果
v
是一个一维数组,并且你希望它被视为列向量,那么上面的代码是正确的。但是,如果v
已经是一个二维数组(例如,形状为(2, 1)
的列向量),则不需要额外的重塑步骤。 -
矩阵与矩阵的乘法 :
同样地,你可以使用
dot
函数或@
运算符来进行矩阵与矩阵的乘法。python# 创建两个矩阵 A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) # 使用 dot 函数进行矩阵与矩阵的乘法 result_dot = np.dot(A, B) print(result_dot) # 输出: # [[19 22] # [43 50]] # 或者使用 @ 运算符 result_at = A @ B print(result_at) # 输出与上面相同
-
元素级乘法(Hadamard乘积) :
如果你想要进行矩阵的元素级乘法(即每个对应位置的元素相乘),你可以直接使用
*
运算符(在NumPy中,这称为逐元素乘法或Hadamard乘积)。python# 创建两个矩阵 A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) # 元素级乘法 elementwise_product = A * B print(elementwise_product) # 输出: # [[ 5 12] # [21 32]]
请注意,在进行矩阵乘法时,矩阵的维度必须兼容。例如,一个m x n
矩阵可以与一个n x p
矩阵相乘,得到一个m x p
矩阵。如果维度不匹配,NumPy将抛出一个ValueError
。