这个问题可能不太清楚,所以我用代码解释一下:
@staticmethod
def generate_data_uncertainty_heat_map(data_property, data_uncertainty, file_path):
plt.figure()
uncertainty = numpy.zeros((data_property.rows, data_property.cols, 4), 'uint8')
uncertainty[..., 0] = uncertainty[..., 1] = uncertainty[..., 2] = numpy.uint8(data_property * 255)
uncertainty[..., 3] = numpy.uint8(data_uncertainty)
fig = plt.imshow(uncertainty, extent=[0, data_property.cols, data_property.rows, 0])
plt.colorbar(fig)
plt.savefig(file_path + '.png')
plt.close()
这样做需要两个(n,n)ndarray形成一个带有 matploblib 的RGBA图像。 为此,我使用 data_property 参数作为我的RGB,使用 data_uncertainty 作为我的不透明度。
我基本上想知道我是否可以写
uncertainty[..., 0] = uncertainty[..., 1] = uncertainty[..., 2]
另一种说法是,不确定性[...,0或1或2] 的数据应为 numpy.uint8(data_property * 255)。< / p>
提前谢谢。
答案 0 :(得分:0)
是的,只要data_property
与shape
具有相同的uncertainty[..., 0]
答案 1 :(得分:0)
您可以使用data_property[..., np.newaxis]
在右侧添加新轴。然后可以像这样完成任务:
uncertainty[..., :3] = numpy.uint8(data_property * 255)[..., np.newaxis]
例如,
In [49]: x = np.arange(6).reshape(2,3)
In [50]: x
Out[50]:
array([[0, 1, 2],
[3, 4, 5]])
In [51]: y = np.zeros((2,3,4))
In [52]: y[...,:3] = x[...,np.newaxis]
In [53]: y
Out[53]:
array([[[ 0., 0., 0., 0.],
[ 1., 1., 1., 0.],
[ 2., 2., 2., 0.]],
[[ 3., 3., 3., 0.],
[ 4., 4., 4., 0.],
[ 5., 5., 5., 0.]]])
In [54]: np.allclose(y[...,0], x)
Out[54]: True
In [55]: np.allclose(y[...,1], x)
Out[55]: True
In [56]: np.allclose(y[...,2], x)
Out[56]: True