2016-10-27 5 views
0

어떻게 배열에서이 문제를 해결할 수 있습니까?ValueError : 입력 배열을 모양 (1920,1072)에서 브로드 캐스트 할 수 없습니다. (1920,1080)

나는 여전히 작동 bitrange 1, 2, 3 내을 programm을 실행할 때, 문제가 검은 색과 흰색 줄무늬

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 4에서이 오류 메시지와 함께 작동하지 않습니다 모양 (1920,1072)에서 입력 배열을 방송 수없는 형태로 (1920,1080)

감사

+0

이 오류가 발생하는 줄은 무엇입니까? 또한,'GrayCode()'가 어디에서 가져 왔습니까? 이 라인의 –

+0

은 입니다. imgs [bits] = numpy.tile (벡터, (높이, 1)) 회색 코드()는 에서 sympy.combinatorics.graycode에서 가져옵니다. GrayCode –

답변

0

1080/(2 ** (3 + 1))은 67.5이다. 따라서 bit_range = 4의 경우 bits = 3, stripe_width이 67이고 vector(1080, 1072) (1072는 1080//2**4 * 2**4) 인 경우 에 할당하려는 문자는 (1920, 1080)입니다.

1080 그래서 1080//n * n 8의 배수이기 때문에 오류 비트들의 더 낮은 값을 발생하지 않고는 변화의 화상을 얻기 때문에 크기가 소정 전달 n은 2, 4 또는 8

줘서 1080 비트의 가치가있는 경우 결과를 목록에 저장하는 것이 해결책입니다.

imgs = [] 
for bit in range(bit_range): 
    # ... 
    imgs.append(numpy.tile(vector, (height,1))) 
+0

고맙습니다. 그것은 작동합니다. –

관련 문제