Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列表和numpython数组_Python_Arrays_List_Numpy_Pytorch - Fatal编程技术网

列表和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
的值是多少?