如何使用我的阵列修复此问题?
我想要显示黑白条纹
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)
感谢。
答案 0 :(得分:0)
1080 /(2 **(3 + 1))是67.5。因此对于X^t
,当bit_range = 4
,bits = 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