问题描述
我试图证明我生成的数组在多个长度尺度上看起来自相似。为此,我想编写一个函数来打印输入数组的左上角,然后打印该部分的左上角,依此类推指定迭代次数。我写了这个递归函数。但是,输出不是我所期望的。
def zoom(array,max_zoom,zoom_level):
half_width = int(array.shape[0]/2)
half_height = int(array.shape[1]/2)
print(array)
while zoom_level < max_zoom:
array = array[:half_width,:half_height]
zoom_level += 1
zoom(array,zoom_level)
问题不是打印到所需的级别然后停止,而是数组开始再次变大并且函数在几次额外迭代后停止。
例如 zoom(array,3,0) 应该为 8x8 网格提供以下输出。
[[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. 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.]]
谁能解释为什么这个函数行为不正常?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)