为不同的ndarray索引分配相同的值 - Python

时间:2014-03-16 01:33:02

标签: python numpy variable-assignment

这个问题可能不太清楚,所以我用代码解释一下:

@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>

提前谢谢。

2 个答案:

答案 0 :(得分:0)

是的,只要data_propertyshape具有相同的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