我想在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)