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

Python使用Numpy获取矩阵指定位置值及代码运行异常解决

问题根源

你代码的核心问题是每次调用define_matrix()方法都会生成一个全新的零矩阵,修改和查询操作没有基于同一个矩阵实例:

  • set方法中修改的是临时生成的局部变量matrix1,修改结果没有作为实例属性保存,你调用a.set(80,1,3)时也没有接收方法返回的修改后矩阵
  • get方法查询时再次调用define_matrix()生成了新的全零矩阵,自然获取不到之前设置的值,返回结果始终为0
  • 额外问题:__str__方法要求返回字符串类型,你直接返回numpy数组会触发类型报错

修正后代码

import numpy as np 

class Matrix:
    def __init__(self, m, n):
        self.row = m
        self.column = n
        # 初始化时就把矩阵存为实例属性,全局共用这一个
        self.matrix = np.zeros((self.row, self.column), dtype=int)

    def __str__(self):
        # 转为字符串返回,符合__str__方法要求
        return str(self.matrix)

    def get(self, a, b):
        try:
            if not a in range(self.row+1):
                print('El valor deseado no pertenece a la matriz.')
            elif not b in range(self.column+1):
                print('El valor deseado no pertenece a la matriz.')
            else:
                print(
                    'El valor ubicado en la fila {} '
                    'y en la columna {} es: {}'
                    .format(a, b, self.matrix[a - 1][b - 1]))
        except:
            print('Ingrese datos válidos')

    def set(self, value, a, b):
        if not a in range(self.row+1):
            print('El valor deseado no pertenece a la matriz.')
        elif not b in range(self.column+1):
            print('El valor deseado no pertenece a la matriz.')
        else:
            # 直接修改实例存储的矩阵属性,修改结果会被保留
            self.matrix[a-1][b-1] = value
            return self.matrix

a = Matrix(4, 4) 
a.set(80, 1, 3)
a.get(1, 3)

运行结果

执行后会输出预期结果:
El valor ubicado en la fila 1 y en la columna 3 es: 80

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:36:03