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

为何numpy数组元素赋值后未更新?2D矩阵操作异常排查

numpy数组赋值失效的原因及解决方法

问题根源

你初始化矩阵E时指定了整数类型:

E = np.zeros((len(A),len(A)),int)

numpy的整数类型数组会自动截断所有小数赋值,只保留整数部分:

  • 原代码中计算出的-row_val/pivot是整数(如-2.0、1.0),截断后仍为有效整数,所以赋值看起来正常。
  • 交换前两行后,计算出的是小数(如-0.5、0.5),被直接截断为0,导致赋值后元素没有变化。

解决方案

只需要把E的类型改为浮点型即可,有两种简单方式:

  1. 初始化时不指定int,numpy会默认使用浮点型:
E = np.zeros((len(A),len(A)))
  1. 直接用np.identity创建浮点型单位矩阵,更简洁:
E = np.identity(len(A))

修改后的完整代码示例

import numpy as np

# 初始化交换后的A
A_row1 = np.array([4,-1,5,1])
A_row2 = np.array([2,-1,4,0])
A_row3 = np.array([-2,2,-2,3])
A_row4 = np.array([0,3,-9,4])

A = np.array([A_row1,A_row2,A_row3,A_row4])

def Elem(A,row):
    pivot = A[row,row]
    # 创建浮点型单位矩阵
    E = np.identity(len(A))
    for i in np.arange(row+1,len(A)):
        row_val = A[i,row]
        val = -row_val/pivot
        print(val)
        E[i,row] = val
        print(E[i,row])
    return E

print(Elem(A,0)) 

运行这段代码后,赋值的小数会被正确保留,E矩阵会按预期更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:52:25