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

生成mxn随机矩阵时遇int()参数错误的原因及解决方法

解决int()参数为元组的错误:随机矩阵生成代码问题分析

你碰到的这个错误根源很明确——你的类初始化方法里的赋值语句写错了,导致self.mSize和self.nSize被意外赋值成了元组,而非你期望的单个数值。

问题出在哪?

看你__init__方法里的这一行:

self.mSize=mSize, self.nSize=nSize

在Python中,逗号是用来创建元组的语法。这行代码会被解析为:

self.mSize = (mSize, self.nSize=nSize)

也就是说,你把一个包含两个元素的元组赋值给了self.mSize,而self.nSize根本没有被正确初始化(它被打包进了self.mSize的元组里)。当你后续执行int(param.mSize)时,自然会报错——因为你试图把一个元组转换成整数,这显然不符合int()的参数要求。

怎么修复?

只需要把初始化方法里的赋值语句改成规范的形式即可,有两种常见写法:

  1. 分成两行赋值(推荐,可读性更高):
def __init__(self, mSize, nSize ):
    self.mSize = mSize
    self.nSize = nSize
  1. 用分号分隔同一条语句(不推荐,但可以正常工作):
def __init__(self, mSize, nSize ):
    self.mSize = mSize; self.nSize = nSize

另外,还有一个小细节可以优化:你的RMatrix方法用了param作为第一个参数,虽然加了断言验证类型,但按照Python类实例方法的惯例,应该用self作为第一个参数,这样代码更符合规范,可读性也更好。修复后的完整代码如下:

import numpy as np

class MP:
    def __init__(self, mSize, nSize ):
        self.mSize = mSize
        self.nSize = nSize
    def RMatrix(self):
        m = int(self.mSize)
        n = int(self.nSize)
        A = np.random.rand(m,n)
        return np.matrix(A)

这样修改后,self.mSize和self.nSize就会是你传入的单个数值(或可转换为整数的类型),不会再出现元组类型的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:09:17