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

使用numpy数组for循环计算矩阵余子式结果异常问题求助

错误原因
  • 核心问题是x = m属于numpy数组的浅拷贝操作,仅创建了指向原数组的引用。修改x的元素时,原输入矩阵m会被同步篡改,后续循环计算m_new时使用的已经是被之前的步骤修改过的矩阵,而非最开始传入的原始数据,因此无法得到正确结果。
  • 你第二次修改代码给结果加10后得到的输出,完全符合「原矩阵被逐步修改」的推导逻辑,可以进一步验证该问题根源。
修复方案

不要直接引用原输入矩阵,初始化一个全新的独立数组存储计算结果,全程使用原始输入矩阵计算余子式即可,示例代码如下:

import numpy as np

c = np.array([[1, 0], [13, 34]])

def rev(m):
    # 初始化和输入矩阵维度一致的空数组,和原矩阵完全独立
    x = np.zeros_like(m)
    n = len(m)
    for i in range(n):
        for j in range(n):
            # 全程使用原始输入的m计算,不受结果数组的修改影响
            m_new = np.delete(m, i, axis=0)
            m_new = np.delete(m_new, j, axis=1)
            x[i][j] = m_new
            # 如果需要计算代数余子式,将上行替换为下面的代码即可
            # x[i][j] = m_new * (-1) ** (i + j)
    print(x)

rev(c)

运行后即可得到你预期的[[34 13] [ 0 1]]输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:06:03