如何设置Gymnasium(原OpenAI Gym)的输出显示宽度?
Gymnasium输出格式调整方案
你可以通过以下几种方式,实现类似Pandas中set_option('display.max_columns', 500)或set_option('display.width', 1000)的格式调整效果,让Gymnasium里的观测空间、观测值打印时格式更规整:
问题场景
你的示例代码:
import gymnasium as gym env = gym.make("LunarLander-v2", render_mode="human") observation, info = env.reset() print(f'env.observation_space: {env.observation_space}') print(f'obs: {observation}')
当前输出(存在自动换行、格式零散的问题):
env.observation_space: Box([-90. -90. -5. -5. -3.1415927 -5. -0. -0. ], [90. 90. 5. 5. 3.1415927 5. 1. 1. ], (8,), float32) obs: [-0.00316305 1.3999956 -0.3203935 -0.48554128 0.00367194 0.072574 0. 0. ]
解决方案
使用NumPy打印选项
Gymnasium的Box空间内部基于NumPy数组实现,设置NumPy的打印参数可统一调整格式:import numpy as np # 设置行宽,避免自动换行 np.set_printoptions(linewidth=1000) # 执行原打印代码即可看到规整输出 print(f'env.observation_space: {env.observation_space}') print(f'obs: {observation}')该方法同时适配
observation_space和observation的打印,NumPy还有精度、显示阈值等其他参数可按需调整。使用pprint模块格式化
借助Python标准库的pprint模块,自定义宽度和紧凑模式控制输出:import pprint pp = pprint.PrettyPrinter(width=500, compact=True) pp.pprint(f'env.observation_space: {env.observation_space}') pp.pprint(f'obs: {observation}')针对NumPy数组的
array2string方法
仅适用于observation这类纯NumPy数组的场景,手动指定格式参数:print(f'obs: {np.array2string(observation, linewidth=1000)}')注意:此方法对
env.observation_space这类Gymnasium空间对象不适用,但方案1已覆盖该场景。
内容的提问来源于stack exchange,提问作者starriet 차주녕
相关产品推荐
相关产品推荐

