以下代码能够按照Jupyter笔记本的预期打印/输出图像:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
from IPython import display
from scipy.misc import toimage
import numpy as np
n = 3
for _ in range(n):
(toimage(np.random.rand(32, 32, 3)))
print("----------------------------")
但是,一旦将其放入函数中,它将停止工作。为什么?我该如何解决?
def print_images(n=3):
for _ in range(n):
(toimage(np.random.rand(32, 32, 3)))
print("----------------------------")
print_images()
display.display_png
作品:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
from IPython import display
from scipy.misc import toimage
import numpy as np
n = 3
for _ in range(n):
display.display_png(toimage(np.random.rand(32, 32, 3)))
print("----------------------------")
def print_images(n=3):
for _ in range(n):
display.display_png(toimage(np.random.rand(32, 32, 3)))
print("----------------------------")
print_images()
您可以在IPythondisplay
模块的文档中阅读更多有关其工作原理以及其他方法失败的信息。
返回的对象toimage
有一个_repr_png_
方法。笔记本将调用此功能以生成您实际看到的图像。无论出于何种原因(我相信您都可以通过深入研究文档来发现它们),x._repr_png_()
只要在单元格的顶级范围内toimage
生成任何实例的调用,笔记本都会自动调用x
。但是,如果toimage
在更深层的嵌套范围内运行,_repr_png_
则不会自动调用。相反,您必须通过显式调用来手动使用相同的显示设备display.display_png
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句