在python中从文本开头更新打印输出



我想在for循环中一个接一个地打印出各种大小的numpy数组,但在循环的每一步都会删除以前的打印。对于长度小于1行的字符串,通常建议的解决方案如下:

import numpy as np
import time
for i in range(5):
a = np.ones(i)
print(a,end = 'r')
time.sleep(0.5)

这是因为数组适合一行,因此打印函数中的'r'参数工作正常,它会返回到下一次打印的行的开头,因此它会打印[][1.][1. 1. ][1. 1. 1.]等。

当打印大于一行时,就会出现问题,而使用'r'时,它只会回到倒数第二行,如下所示:

for i in range(5):
a = np.ones(shape = (i,i))
print(a,end = 'r')
time.sleep(0.5)

这给出了以下内容:

[[1. 1.]
[[1. 1. 1.]
[1. 1. 1.]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]

而我希望阵列在大小上更新而不会在最后一行重叠。从本质上讲,有没有办法用其他东西代替end = 'r',让它回到整个印刷品的开头,而不仅仅是行首?我在Jupyter笔记本上用Python 3.8.3 做这件事

经过更多的研究,我找到了一个解决方案。其中的关键词是";Jupyter笔记本;这让我找到了这个页面:

覆盖jupyter笔记本中以前的输出

这使用Ipython.display,我的问题的解决方案如下所示:

import numpy as np
import time
from IPython.display import clear_output
for i in range(5):
clear_output(wait=True)
a = np.ones(shape = (i,i))
print(a)
time.sleep(0.5)

最新更新