将列表转换为数组时出现Numpy问题



为了开始本主题,我创建了一个股市环境,函数可以通过该函数返回其观察结果。字段"df"是从csv文件加载的pandas实例,我将返回数据帧的一个步骤(行(,以获取在数据表上返回其值的数据。我的问题是,当我将数据设置为观测字段时,它返回的值与数据表不同。

def _next_observation(self):
observation = [
self.df.loc[self.current_step, 'Open'],
self.df.loc[self.current_step, 'High'],
self.df.loc[self.current_step, 'Low'],
self.df.loc[self.current_step, 'Close'],
self.df.loc[self.current_step, 'Volume'],
self.account_quantity
]
# Add Indicators
if self.indicators != None:
for _ in range(len(self.indicators)):
observation.append(self.df.loc[self.current_step, self.indicators[_][0]])

print(observation) # Print normally

self.observation = np.array(observation) # Hmmmmmm
print(self.observation) # Print strangly
exit(1)

return self.observation

下面列出了该数据的步骤返回实例中的第一个不正确的观察结果。

[ 5.17610000e-01  5.17810000e-01  5.15010000e-01  5.15370000e-01
5.18581850e+06  0.00000000e+00  3.76286621e+01  5.15838144e-01
-1.86428571e-05]

我已经把问题缩小到一行代码。

正确的数据显示为下方的列表而非numpy数组

[0.51761, 0.51781, 0.51501, 0.51537, 5185818.5, 0, 37.62866206258322, 0.5158381442961018, -1.864285714292535e-05]

如果有人对如何解决这个问题有任何建议,请告诉我,我不明白为什么会发生这种情况。我通常不会寻求帮助,但这是第一次。我还有一个代理(A2C(,它在操作时不断返回0,我认为数据是罪魁祸首。

真诚的Richard

数据只是用指数表示法,但完全相同。要抑制numpy中的指数表示法,可以执行以下操作:

numpy.set_printoptions(supress = True)

或者您可以使用格式化的变量打印,例如:

for item in mylist:
print(f"{item:0.3f}")

最新更新