Python之numpy库——矩阵相乘

本文探讨了在机器学习中遇到的矩阵相乘问题,特别是numpy库中的矩阵点乘操作。介绍了点乘的定义,强调了点乘时矩阵维度的重要性,并通过实例展示了不同维度矩阵相乘的结果。总结得出,矩阵相乘时,一个矩阵的列数必须与另一个矩阵的行数相等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在机器学习中,会遇见两个矩阵并非向量乘积,而是数值上的相乘。当下我是初学者,遇见后很困惑,于是搜索了相关资料,写个文章,总结一下个人理解。

后续会进行更新,我是用到哪些就查哪些,就总结哪些

一、 向量的点乘
也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。

1、设n1是3 x 3 的矩阵,n2 是1 x 3 的矩阵
在这里插入图片描述
如上图所示,n2的每一列分别与n1每一行的每一列的各个元素分别相乘,结果另存为一个新矩阵中,新矩阵的维度与n1 和 n2 中维度最大的一样。

2、 若n2是2 x 3 即二维三列的矩阵,与n1 即三行三列3 x 3的矩阵相乘,会报错,如下图:
在这里插入图片描述
意思就是以(3,3)和(2,3)的两个矩阵无法进行点乘运算。
3、于是我把矩阵n2换成4x3的矩阵保持列数一致。结果仍然是报错。
在这里插入图片描述
4、最后我把矩阵n3换成和矩阵n1一样的行列数即 3 x 3,结果正确。
在这里插入图片描述
从上图可以看出,两个维度一样的矩阵进行点乘时,是同一行的同一列元素分别相乘后存储到新的矩阵中,新矩阵的维度与n1和n

### 使用Python Numpy 创建可读写的矩阵 为了创建一个可以在程序中进行读写操作的矩阵,通常会使用 `numpy` 中的数组对象来表示矩阵。下面展示如何定义、修改以及保存这种类型的矩阵。 #### 导入必要的并初始化矩阵 首先需要导入 NumPy ,并通过指定数据类型和维度参数来构建一个新的二维数组作为矩阵: ```python import numpy as np # 定义一个简单的3x3浮点数矩阵 matrix = np.array([ [1., 2., 3.], [4., 5., 6.], [7., 8., 9.] ], dtype=np.float64) print(matrix) ``` 这段代码展示了怎样利用列表推导式快速建立一个多维数组结构[^4]。 #### 对矩阵执行基本的操作 一旦有了这个矩阵实例之后就可以对其进行各种各样的算术运算和其他处理方法了。比如加法、减法、乘法等都是支持的;还可以改变其内部元素值来进行编辑工作: ```python # 修改特定位置上的数值 matrix[0][0] = 10. print("After modification:") print(matrix) # 执行两个相同大小矩阵之间的逐元素相乘 another_matrix = np.ones((3, 3)) * 2 result = matrix * another_matrix print("\nElement-wise multiplication result:") print(result) ``` 这里说明了可以通过索引来访问单个或多个元素从而实现对它们赋新值的功能。 #### 将矩阵存储到文件以便后续加载回来继续使用 当希望把当前状态下的矩阵持久化下来供以后再次调用时,则可以借助于NumPy提供的 `.save()` 和 `.load()` 函数完成这项任务: ```python filename = 'my_matrix.npy' # 存储矩阵至本地磁盘上 np.save(filename, matrix) # 加载之前保存过的矩阵副本 loaded_matrix = np.load(filename) print(f"\nLoaded from '{filename}':") print(loaded_matrix) ``` 上述过程描述了一个完整的流程——从创建一个初始版本开始直到最后将其序列化成二进制格式存档起来再恢复原貌为止[^2]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值