记录numpy中的矩阵乘法及对应位相乘

这篇博客介绍了Python中使用numpy库进行矩阵乘法和元素级相乘的操作。通过`np.dot()`和`np.matmul()`实现矩阵乘法,而`np.multiply()`以及直接使用`*`操作符执行元素级相乘。示例代码展示了这些函数的用法并打印了运算结果。
import numpy as np

a = [[0,0],
     [3,4]]
b = [[1,2],
     [1,2]]

a = np.array(a)
b = np.array(b)
# 矩阵乘法
res1 = np.dot(a,b)
res2 = np.matmul(a,b)
print(res1)
print(res2)

# 对应位相乘
res3 = np.multiply(a,b)
res4 = a*b
print(res3)
print(res4)
numpy中,矩阵乘法有多种使用方法,以下是详细介绍: ### np.dot() - 若操作对象为一维数组,`np.dot()`求的是内积;若为二维数组,则进行矩阵乘法。需要注意的是,矩阵乘法要求第一个矩阵的列数和第二个矩阵的行数必须相同。示例代码如下: ```python import numpy as np # 一维数组内积 a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) result_dot_1d = np.dot(a, b) print("一维数组内积结果:", result_dot_1d) # 二维数组矩阵乘法 ar1 = np.array([[1, 2, 3], [4, 5, 6]]) ar2 = np.array([[7, 8], [9, 10], [11, 12]]) result_dot_2d = np.dot(ar1, ar2) print("二维数组矩阵乘法结果:\n", result_dot_2d) ``` ### np.multiply() 此函数用于元素乘法,它以元素为单乘以参数。若参数为数组,维度会对应相乘;若参数为常数,则数组的所有数值会对应发生变化。示例代码如下: ```python import numpy as np # 数组数组元素乘法 arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) result_multiply_arr = np.multiply(arr1, arr2) print("数组数组元素乘法结果:\n", result_multiply_arr) # 数组常数元素乘法 constant = 2 result_multiply_constant = np.multiply(arr1, constant) print("数组常数元素乘法结果:\n", result_multiply_constant) ``` ### `*` 运算符 `*` 运算符并没有进行矩阵乘法,而是矩阵矩阵元素进行了相乘,要求参运算的两个矩阵有相同的shape。示例代码如下: ```python import numpy as np ar3 = np.array([[1, 2], [3, 4]]) ar4 = np.array([[5, 6], [7, 8]]) result_star = ar3 * ar4 print("* 运算符元素相乘结果:\n", result_star) ``` ### np.matmul() `np.matmul()`主要用于二维矩阵的数学上的矩阵乘法。示例代码如下: ```python import numpy as np a = np.array([[80, 86], [82, 80], [85, 78], [90, 90], [86, 82], [82, 90], [78, 80], [92, 94]]) b = np.array([[0.7], [0.3]]) result_matmul = np.matmul(a, b) print("np.matmul() 二维矩阵乘法结果:\n", result_matmul) ``` ### `@` 表达式 `@` 表达式同样实现数学上的矩阵乘法。示例代码如下: ```python import numpy as np a = np.array([[80, 86], [82, 80], [85, 78], [90, 90], [86, 82], [82, 90], [78, 80], [92, 94]]) b = np.array([[0.7], [0.3]]) result_at = a @ b print("@ 表达式矩阵乘法结果:\n", result_at) ``` 此外,numpy.linalg中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西,它们使用的是如BLAS、LAPACK、Intel MKL(Math Kernel Library,可能有,取决于NumPy版本)等行业标准线性代数库 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值