python - 矩阵向量乘法 Python3
问题描述
这是我到目前为止编写的代码,但我没有得到我想要的输出。我想知道代码中缺少什么。任何帮助将不胜感激。
def matVec(matrix,vector):
for i in range(len(matrix)):
result = []
total = 0
for j in range(len(vector)):
total += matrix[i][j] * vector[j]
result.append(total)
return result
matrix_0 = [[1, 2, 3],[2, 3, 4]]
vector_0 = [2, 2]
print(matVec(matrix_0,vector_0))
解决方案
这就是诀窍。错误在于您声明原始矩阵的方式。特别是,您必须声明对行中的元素进行分组的矩阵,而不是像开始代码中那样在列中的元素
您将对matrix
[column] 的元素的行上的元素相乘vector
,以遵守乘法矩阵与向量的规则。给定一个大小为a
[= 行大小,在您的情况下为 3] x b
[= 列大小,在您的情况下为 2] 的矩阵,您的向量的行数必须等于b
[= 在您的情况下为 2]。给定您的 2 x 1 向量,最终结果将是 3 x 1 向量
现在,当您运行代码时len(matrix)
,应该返回 3。如果您运行原始版本,您将 2 作为值返回,这会阻止最后一次计算得到结果向量的剩余第三个元素 [即 final 14
]
def matVec(matrix,vector):
result = []
for i in range(len(matrix)):
total = 0
for j in range(len(vector)):
total += matrix[i][j] * vector[j]
result.append(total)
return result
matrix_0 = [[1, 2],[2, 3],[3, 4]]
vector_0 = [2, 2]
print(matVec(matrix_0,vector_0))
推荐阅读
- microsoft-graph-api - Microsoft Graph /findMeetingTimes 空结果:emptySuggestionsReason = "AttendeesUnavailable" 或 "Unknown"
- python - 使用 django admin 中的选项一次更新两个字段
- javascript - 从字符串中删除连续字符,直到它没有任何连续字符
- mysql - 对每个结果行进行计算的 Mysql 查询
- c++ - 模板化代码中的函数调用歧义
- python - groupby 数据帧上的 .rolling()
- sql - 向分组集添加别名时出现“语法错误”和“无法绑定”?
- java - PUT 和 POST 操作的 Apigee 问题
- windows - Detours DLL 注入仅适用于特定应用程序
- python-3.x - 相对于特定旋转python向前移动对象