我使用下面的代码收到此错误,但我没弄清楚原因。
我打印了我的物体形状,它们是一样的。
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)
打印声明:
(211,256)(211,256)(211,256)
错误:
entropy [edges.data == 1.0] = data.data
ValueError:数组无法播放以修正形状
如果我尝试分配一个简单的值,它可以工作:
entropy[edges.data == 1.0] = 100
问题是什么?我可以根据某些条件将ndarray分配给另一个吗?
提前谢谢。
答案 0 :(得分:2)
除非edges.data == 1.0
无处不在,否则无效,因为您尝试使用完整data.data
设置它。您可能打算如下吗?
entropy[edges.data == 1.0] = data.data[edges.data == 1.0]
答案 1 :(得分:1)
您要分配到entropy
的子集,特别是edges.data == 1
的子集。
因此,您需要确保data.data
具有与您指定的子集相同的形状。
要检查,请尝试打印:entropy[edges.data == 1.0].shape