【问题标题】:Python ValueError: operands could not be broadcast together with shapes (5,4) (5,5)Python ValueError:操作数无法与形状一起广播(5,4)(5,5)
【发布时间】:2015-07-29 02:23:57
【问题描述】:

所以我一直在做一个项目,但一直停留在一个步骤上。我正在使用一系列 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)

【问题讨论】:

    标签: python numpy padding


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 2012-10-31
      • 2013-04-07
      • 2014-08-24
      • 2018-02-01
      • 2017-09-09
      • 2012-08-05
      • 2018-08-18
      • 2020-06-20
      • 2018-12-26
      相关资源
      最近更新 更多