ValueError:数组不能广播到正确的形状-Python



我收到了下面的代码中的错误,但我不知道为什么。

我打印了我的物体形状,它们是一样的。

def plot_edges_entropy(data, edges, file_path):
    plt.figure()
    
    entropy = numpy.zeros((data.rows, data.cols), float)
    print entropy.shape, edges.data.shape, data.data.shape
    entropy[edges.data == 1.0] = data.data
    fig = plt.imshow(entropy, extent=[0, data.cols, data.rows, 0], cmap='hot_r', vmin=0, vmax=1, interpolation='nearest')
    plt.colorbar(fig)
    plt.savefig(file_path + '.png')
    plt.close()
def __init__(self, open_image=False):
    """
    The Data constructor
    """
    self.data = misc.imread('../TestImages/brain_noisy.jpg', flatten=True)
    self.data /= 255.0
    x, y = self.data.shape
    self.rows = x
    self.cols = y
    if not open_image:
        self.data = numpy.zeros((self.rows, self.cols), float)

打印对账单:

(211256(

错误:

熵[边缘数据==1.0]=数据数据

ValueError:数组无法广播到正确的形状

如果我尝试分配一个简单的值,它会起作用:

 entropy[edges.data == 1.0] = 100

怎么了?关于某些条件,我可以将ndarray分配给另一个ndarray吗?

提前谢谢。

除非edges.data == 1.0无处不在,否则这将不起作用,因为您正试图用完整的data.data设置它。你可能有以下打算吗?

entropy[edges.data == 1.0] = data.data[edges.data == 1.0]

您正在为entropy的子集赋值,特别是为其分配edges.data == 1的子集。

因此,您需要确保data.data与您要分配的子集具有相同的形状。

要进行检查,请尝试打印:entropy[edges.data == 1.0].shape

最新更新