[英]convert <class 'list'> to numpy.ndarray
我对python有点陌生,并且正在使用OpenAI的miniWOB。 我想用cv2打印我对代理商的观察结果。 但是真的没关系。 我的问题是我不知道从健身房收到的用于“观察”的确切数据类型。 但是我希望它作为一个简单的3Dimensional numpy数组。 我可以使用cv2打印此格式。 所以有人可以帮助我将我的<class'list>观察结果转换为:<type nunpy.ndarray>吗? 我已经尝试过观察= np.asarray(observation),但是随后出现此错误:“ mat数据类型= 17”。
import cv2
import random
import gym
import universe
import go_vncdriver
import numpy as np
def main():
env = gym.make('wob.mini.ClickTest-v0')
env.configure(remotes=1) # create one flashgames Docker container
observation = env.reset()
while True:
env.render()
x = 110
y = 270
action_n = [universe.spaces.PointerEvent(x, y, 1), universe.spaces.PointerEvent(x, y, 0),
universe.spaces.PointerEvent(x, y, 1)]
action_n = [action_n for ob in observation]
observation, reward_n, done_n, info = env.step(action_n)
observation = np.asarray(observation) #this one converts to nd array but then I got the mat data type = 17 error
if (observation != None):
print(type(observation))
cv2.imshow('pong voor net', observation)
cv2.waitKey(0)
cv2.destroyAllWindows()
main()
我收到这个:
[{'vision': array([[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
...,
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]], dtype=uint8), 'text': []}]
我想将其转换为这种类型:
[[[144 72 17]
[144 72 17]
[144 72 17]
...,
[144 72 17]
[144 72 17]
[144 72 17]]
[[144 72 17]
[144 72 17]
[144 72 17]
...,
[144 72 17]
[144 72 17]
[144 72 17]]
[[144 72 17]
[144 72 17]
[144 72 17]
...,
[144 72 17]
[144 72 17]
[144 72 17]]
我并不完全熟悉位世界,但是基于输出,我会假设您有一个观测值数组(在您的情况下只有一个),并且每个观测值都包含一个dict,可能还可以有其他传感器输入,但是在您的示例中,它仅包含可见的观测“视觉”(即像素)。 因此,要获得所需的数组,请选择第一个元素并提取“ vision”元素:
observation = np.asarray(observation[0]['vision'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.