关于矩阵的变量赋值

2024-09-28 23:48:01 发布

您现在位置:Python中文网/ 问答频道 /正文

import numpy as np
>>> class prof:
...     def __init__(self,q,Q):
...         self.q,self.Q = q,Q
...     def profitmatrix(self):
...          q,Q= self.q,self.Q,
...          pimat=np.empty([1, Q+1])
...          list1=[]
...          for z in range(Q+1):
...              list1.append(z/(2**(z+1)))
...              sum1=sum(list1)+(Q/(2**(Q+1)))
...              for i in range(Q+1):
...                  if i<=q:
...                      pimat[:,i]=sum1
...                  else:
...                      pimat[:,i]=0
...                      return pimat
... 
>>> y= prof(1,2)
>>> print y.profitmatrix()
[[ 0.25  0.25  0.  ]]
>>> sum1
0.75

我想给pimat的元素赋值sum1。但是,尽管记住了sum1的值,但一旦程序继续进入循环,它就会改变。我不知道为什么会这样


Tags: inimportselfnumpyfordefasnp
1条回答
网友
1楼 · 发布于 2024-09-28 23:48:01

问题是您正在覆盖循环中sum1的值。这也许是答案,但不清楚你到底想做什么:

import numpy as np

class prof:
     def __init__(self,q,Q, sum1):
         self.q,self.Q = q,Q
     def profitmatrix(self):
          q,Q= self.q,self.Q,
          pimat=np.empty([1, Q+1])
          list1=[]
          for z in range(Q+1):
              list1.append(z/(2**(z+1)))
              suma=sum(list1)+(Q/(2**(Q+1)))
              for i in range(Q+1):
                  if i<=q:
                      pimat[:,i]=sum1
                  else:
                      pimat[:,i]=0
                      return pimat


sum1 = 0.75
y= prof(1,2, sum1)
print y.profitmatrix()

@user2357112是正确的,无论您尝试做什么,类范围中的sum1变量与您在脚本末尾访问的变量是不同的

相关问题 更多 >