列表和numpython数组
实际上我有很多相关的问题 我有以下课程:列表和numpython数组,python,arrays,list,numpy,pytorch,Python,Arrays,List,Numpy,Pytorch,实际上我有很多相关的问题 我有以下课程: class environment_step: def __init__(self,solar,battery,allocation,G1,G2): self.solar = solar self.battery = battery self.allocation = allocation self.G1 = G1 self.G2 = G2 def step
class environment_step:
def __init__(self,solar,battery,allocation,G1,G2):
self.solar = solar
self.battery = battery
self.allocation = allocation
self.G1 = G1
self.G2 = G2
def step(self):
self.residual = self.solar+self.battery-self.allocation
self.reward = min(0,max(self.residual*self.G1,self.residual*self.G2))
self.cost = -self.reward
self.battery = max(0,self.residual)
return self.reward, self.cost, self.battery
我使用它如下
reward = []
B = np.zeros(1)
allocation = np.ones(1)*12
G1 = np.ones(24)
G2 = np.ones(24)*2
solar = np.random.rand(24)
for t in range(24):
environment = environment_step(solar[t], B, allocation, G1[t], G2[t])
R, C, B = environment.step()
reward.append(R)
其中太阳能、电池、分配、G1和G2是numpy阵列。当我检查R时,如果它是0,那么我只得到0,但是对于不同于零的东西,我得到[[-2.114]]
或者任何数字。为什么我得到的是这个而不是[-2.114]
我使用不同的条目值多次运行环境,并将R
附加到奖励列表中。该列表将如下所示:
[0,0,数组([-2.114]],dtype=float32),0,数组([-1.324]],dtype=float32)]
。我通过return=torch.tensor(return,dtype=torch.float32)
将列表奖励转换为pytorch张量。当列表以0开头时,如我展示的示例列表中所示,它工作得非常好。但是,如果列表以非零开头,例如[array([[-2.114]],dtype=float32)0,0,0,array([-1.324]],dtype=float32)]
,那么我会得到错误类型错误:不是序列。我怀疑问题在于数组的双括号,但我不确定。这就是为什么我想在前面(上一段)解决这个问题
尽管我正在研究火炬张量,但我认为这个问题在阵列中也发生过。那么,假设[1.2,1.42,3.13]
和[array([1.2],dtype=float32),array([1.42],dtype=float32),array([3.13],dtype=float32)]
之间有什么区别呢?甚至是相同的,但有两个括号(我的案例)。我知道列表是通用的,允许文本,而数组只允许数字,但从这一点来看,似乎还有更多,我不确定。我将感谢任何帮助
编辑:我添加了一个最低限度的工作示例。我通过执行
R[0], B[0], C[0] = environment.step()
与我最初描述的相反。我写这篇文章是为了对某人有用。我的列表现在看起来是这样的:[array([-1.23])、array([-2.32])、array([0.])]
,这更有意义。为什么要进行向下投票?我是在问一些显而易见的问题吗?我做了一些谷歌搜索,但并没有真正找到答案,我一直在我的代码上尝试不同的东西,但没有什么是真正有效的。你能提供最低限度的工作示例吗?(我没有投反对票)。当您运行环境=…
时,太阳能
、电池
、分配
、G1
和G2
的值是多少?