ValueError:无法将形状(1920,1072)的输入数组广播为形状(1920,1080)

时间:2016-10-27 12:40:48

标签: arrays python-3.x numpy

如何使用我的阵列修复此问题?

我想要显示黑白条纹

height = 1920
width = 1080
bitrange = 3
imgs = numpy.zeros((bitrange, height, width), dtype=bool)

for bits in range(0, bitrange):
    stripe_width = width// 2**(bits+1)
    binary = numpy.fromiter(GrayCode(bits+1).generate_gray(), dtype=numpy.int) % 2
    vector = numpy.repeat(binary, stripe_width)
    imgs[bits] = numpy.tile(vector, (height,1))
    window.show(imgs[bits]* 1.0)

所以,问题是当我为bitrange 1,2,3运行我的程序时,它仍然有效。

但是从bitrange 4它不适用于此错误消息:无法将形状(1920,1072)的输入数组广播到形状(1920,1080)

感谢。

1 个答案:

答案 0 :(得分:0)

1080 /(2 **(3 + 1))是67.5。因此对于X^t,当bit_range = 4bits = 3为67,而stripe_width的形状vector(1072为(1080, 1072))时,您正在尝试分配给具有1080//2**4 * 2**4形状的imgs[3]

较低的位值不会发生此错误,因为1080是8的倍数,因此(1920, 1080)为1080,n为2,4或8。

由于您获得了通过一定比特值的不同大小的图像,因此解决方案是将结果存储在列表中:

1080//n * n