繁体   English   中英

Python ValueError:操作数不能与形状(5,4)(5,5)一起广播

[英]Python ValueError: operands could not be broadcast together with shapes (5,4) (5,5)

因此,我一直在从事一个项目,但是却停留在一个步骤上。 我正在使用一系列的for循环在另一个更大的矩阵上迭代一个矩阵。 我的整个代码都工作到了最后一步,它给了我一个ValueError,说ValueError: operands could not be broadcast together with shapes (5,4) (5,5)

我知道这是因为矩阵的大小不同-我认为错误出在我的填充中。 有人可以浏览一下并告诉我我的错误吗? 我疯了试图解决这个问题。

def haar_feature_generator(image_array, haar_matrices_list):

    rows, columns = image_array.shape
    output_matrix = numpy.zeros((rows, columns))
    numpy.pad(output_matrix, (4,4), 'constant', constant_values=0)

    for y in range(0, rows):
        for x in range(0, columns):
            for haar_matrix in haar_matrices_list:
                rows_1, columns_1 = haar_matrix.shape
                output_matrix[y, x] = numpy.multiply((image_array[y:(y + rows_1) , x:(x + columns_1)]), haar_matrix).sum()

    output_array = numpy.asarray(abs(output_matrix))
    return output_array

hm_list_1 = ([numpy.matrix('1,1;-1,-1'), numpy.matrix('1,1,1 ; 1,1,-1 ; 1,-1,-1'), numpy.matrix('-1,-1,-1 ; -1,1,1 ; 1,1,1')])
hm_list_2 = ([numpy.matrix('1,1,1 ; 1,1,-1 ; -1,-1,-1'), numpy.matrix('-1,-1,-1 ; -1,-1,-1 ; 1,1,1')])
hm_list_3 = ([numpy.matrix('1,1,1,1 ; 1,1,1,1 ; 1,1,1,-1 ; -1,-1,-1,-1'), numpy.matrix('1,1,1,1 ; 1,1,-1,-1 ; -1,-1,-1,-1 ; -1,-1,-1,-1')])
hm_list_4 = ([numpy.matrix('1,1,1,1 ; 1,-1,-1,-1 ; 1,1,1,-1 ; -1,-1,-1,-1'), numpy.matrix('1,1,1,-1 ; 1,1,-1,-1 ; 1,-1,-1,-1 ; -1,-1,-1,-1')])
hm_list_5 = ([numpy.matrix('1,1,1,1,1 ; 1,1,-1,-1,-1 ; 1,1,1,-1,-1 ; 1,1,1,1,-1 ; -1,-1,-1,-1,-1')])

haar_matrices_list = hm_list_1 + hm_list_2 + hm_list_3 + hm_list_4 + hm_list_5
haar_feature_generator(image_array, haar_matrices_list)

没关系,解决了。 希望这对遇到我同样问题的人有所帮助。

def haar_feature_generator(image_array, haar_matrices_list):

    rows, columns = image_array.shape
    output_matrix = numpy.zeros((rows, columns))

    for haar_matrix in haar_matrices_list:
        numpy.pad(output_matrix, len(haar_matrix[0]), 'constant', constant_values=0)
        for y in range(0, rows):
            for x in range(0, columns):
                rows_1, columns_1 = haar_matrix.shape
                output_matrix[y, x] = numpy.multiply((image_array[y:(y + rows_1) , x:(x + columns_1)]), haar_matrix).sum()

        output_array = numpy.asarray(abs(output_matrix))
        return output_array

hm_list_1 = ([numpy.matrix('1,1;-1,-1'), numpy.matrix('1,1,1 ; 1,1,-1 ; 1,-1,-1'), numpy.matrix('-1,-1,-1 ; -1,1,1 ; 1,1,1')])
hm_list_2 = ([numpy.matrix('1,1,1 ; 1,1,-1 ; -1,-1,-1'), numpy.matrix('-1,-1,-1 ; -1,-1,-1 ; 1,1,1')])
hm_list_3 = ([numpy.matrix('1,1,1,1 ; 1,1,1,1 ; 1,1,1,-1 ; -1,-1,-1,-1'), numpy.matrix('1,1,1,1 ; 1,1,-1,-1 ; -1,-1,-1,-1 ; -1,-1,-1,-1')])
hm_list_4 = ([numpy.matrix('1,1,1,1 ; 1,-1,-1,-1 ; 1,1,1,-1 ; -1,-1,-1,-1'), numpy.matrix('1,1,1,-1 ; 1,1,-1,-1 ; 1,-1,-1,-1 ; -1,-1,-1,-1')])
hm_list_5 = ([numpy.matrix('1,1,1,1,1 ; 1,1,-1,-1,-1 ; 1,1,1,-1,-1 ; 1,1,1,1,-1 ; -1,-1,-1,-1,-1')])

haar_matrices_list = hm_list_1 + hm_list_2 + hm_list_3 + hm_list_4 + hm_list_5

output_matrix = haar_feature_generator(image_array, haar_matrices_list)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM