【问题标题】:Random matrix: int() argument must be a string or a number, not 'tuple'随机矩阵:int() 参数必须是字符串或数字,而不是“元组”
【发布时间】:2018-01-04 11:30:54
【问题描述】:

我正在尝试生成一个矩阵,该矩阵为 mxn 并包含随机数。我已经生成了以下代码,但对收到的错误感到困惑。这是我正在使用的代码:

class MP:
def __init__(self,
          mSize, nSize
             ):
    self.mSize=mSize,
    self.nSize=nSize

def RMatrix(param):
  assert isinstance(param, MP)
  m = int(param.mSize)
  n = int(param.nSize)
  A=np.random.rand(m,n)
  return (np.matrix(A))

我收到错误:int() 参数必须是字符串或数字,而不是“元组”。为什么值作为元组传递?这是怎么回事,我该如何解决?

【问题讨论】:

  • “参数”应该是什么? param 是什么类型的输入?
  • 是类的一个实例。您可以根据需要交换 Self 和 param。如果我输入 Self 或 param,错误仍然相同。虽然我对 python 很陌生,所以我可能是错的?如果我错了,任何有更多python OOP知识的人请纠正我!
  • 我需要以某种方式解压元组吗???
  • @CuriousPython - 您可以更改self的名称是正确的。但是,我建议不要这样做,因为当其他人(或您以后)阅读代码时可能会造成混淆。
  • 您能告诉我们您是如何创建 MP 实例的吗?问题可能就在那里。

标签: python int tuples


【解决方案1】:

知道了。您的 init (at self.mSize=mSize**,**) 中有一个逗号。删除它,你的代码就可以正常工作了。

import numpy as np
class MP:
    def __init__(self,
              mSize, nSize
                 ):
        self.mSize=mSize
        self.nSize=nSize

    def RMatrix(param):
      assert isinstance(param, MP)
      m = int(param.mSize)
      n = int(param.nSize)
      A=np.random.rand(m,n)
      return (np.matrix(A))

x=MP(3,3)
print x.RMatrix()

输出:

[[ 0.88170563  0.56061723  0.71311863]
 [ 0.3550273   0.83179011  0.10337231]
 [ 0.43324567  0.52177816  0.04648175]]

【讨论】:

    猜你喜欢
    • 2012-08-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 2014-02-26
    相关资源
    最近更新 更多