You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写N×N方阵相乘函数技术求助:实现矩阵乘法逻辑

方阵乘法函数实现详解

需求说明

编写一个函数,接收两个N×N的方阵(二维数组),返回它们的乘积,输入仅为方阵。

方阵乘法规则拆解

先拿2×2矩阵举例,假设矩阵A、B如下:

A = [[a00, a01],
     [a10, a11]]
B = [[b00, b01],
     [b10, b11]]

乘积矩阵C的每个元素计算方式:

  • C[0][0] = a00b00 + a01b10
  • C[0][1] = a00b01 + a01b11
  • C[1][0] = a10b00 + a11b10
  • C[1][1] = a10b01 + a11b11

通用规则:对于结果矩阵C的任意位置C[n][m],需要取A的第n行所有元素,和B的第m列所有元素,将对应位置的元素相乘后全部求和,得到的值就是C[n][m]。

你的现有代码问题

你当前的代码只是遍历并打印了两个矩阵的所有元素,没有实现核心的乘法计算逻辑,接下来一步步完成这个函数:

实现步骤

  1. 确定矩阵尺寸:因为输入是N×N方阵,所以矩阵的边长n = len(a)(a的行数就是N,每行的长度也等于N)。
  2. 初始化结果矩阵:创建一个n×n的全0矩阵,用来存储最终的乘积结果,比如用[[0 for _ in range(n)] for _ in range(n)]生成。
  3. 遍历结果矩阵的每个位置:用两层循环,外层循环遍历结果矩阵的行row_idx,内层循环遍历结果矩阵的列col_idx。
  4. 计算当前位置的乘积值:对于每个(row_idx, col_idx),需要遍历一个中间索引k(从0到n-1),累加a[row_idx][k] * b[k][col_idx]——这里a[row_idx][k]是A第row_idx行的第k个元素,b[k][col_idx]是B第col_idx列的第k个元素,对应相乘后求和就是当前位置的结果。
  5. 填充结果矩阵:把计算得到的和赋值给结果矩阵的result[row_idx][col_idx]。
  6. 返回结果矩阵:循环结束后,返回初始化的结果矩阵。

完整实现代码

def matrix_mult(a, b):
    n = len(a)
    # 初始化n×n的全0结果矩阵
    result = [[0 for _ in range(n)] for _ in range(n)]
    
    # 遍历结果矩阵的每一行
    for row_idx in range(n):
        # 遍历结果矩阵的每一列
        for col_idx in range(n):
            # 计算当前位置的乘积和
            total = 0
            for k in range(n):
                total += a[row_idx][k] * b[k][col_idx]
            # 填充结果矩阵
            result[row_idx][col_idx] = total
    return result

代码解释

  • n = len(a):获取方阵的边长,因为输入是N×N,所以a的行数就是N。
  • result = [[0 for _ in range(n)] for _ in range(n)]:生成一个n行n列的全0矩阵,避免直接修改原矩阵。
  • 三层循环:第一层控制结果矩阵的行,第二层控制列,第三层完成对应行和列的元素相乘求和。
  • 最后返回填充好的结果矩阵,就是两个方阵的乘积。

内容的提问来源于stack exchange,提问作者Joelinton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:46:16