将整数矩阵映射到图像

Map a matrix of integers to and image

您好,我在将矩阵转换为图像时遇到问题。我正在处理生成的程序内容 'world map',我正在尝试以漂亮的颜色显示矩阵。

我有一个类似于下面这个数组的数组:

world_map = [[2, 2, 2, 2, 2, 2, 2, 2, 3, 2, ],
             [1, 2, 2, 2, 2, 2, 1, 1, 2, 2, ],
             [1, 2, 2, 2, 2, 2, 1, 1, 1, 3, ],
             [2, 2, 2, 2, 2, 2, 2, 2, 1, 2, ],
             [2, 3, 2, 2, 2, 3, 2, 2, 2, 2, ],
             [3, 3, 2, 2, 2, 2, 2, 2, 2, 2, ],
             [2, 2, 2, 2, 2, 2, 1, 2, 2, 2, ],
             [2, 2, 2, 1, 2, 2, 1, 2, 2, 2, ],
             [2, 2, 1, 2, 2, 2, 2, 3, 2, 3, ],
             [2, 2, 2, 3, 2, 2, 1, 2, 2, 2, ]]

我想做的是通过将值 1、2 和 3 映射到我通过此查找选择的一些 RGB 值来将此矩阵转换为类似图像 table:

color_map = {
     1: [50, 64, 168],
     2: [70, 156, 44],
     3: [176, 167, 99],
}

我已经尝试使用 python map 函数映射每个值,并且我已经尝试向量化这样的映射函数 np.vectorize(lambda c: color_map[c])(world_map) 但这导致了错误。有谁知道将此矩阵映射到图像的正确方法?

这应该可以满足您的需求:

world_map = np.array(world_map)
img = np.empty(tuple(list(world_map.shape) + [3]))
img[world_map==1] = [50, 64, 168]
img[world_map==2] = [70, 156, 44]
img[world_map==3] = [176, 167, 99]