首页 > 解决方案 > 有效地将 {coordinate+value} 集绘制到(numpy 数组)位图

问题描述

假设我有一组像素值,例如

> S[42]
6, 2, (0.1, 0, 0)

^ 这里第 42 项是用于像素位置(6,2)的暗红色。

如何有效地绘制S成一个新的 numpy 位图数组bitmap = np.zeros((1024, 768, 3))

是否有一些矢量化解决方案(而不是for循环)?

我可以S按列拆分为S_x,如果有帮助的话S_yS_RGB

标签: arraysnumpyvectorization

解决方案


这就是你的做法,是的,拆分是有帮助的,并使用我在下面的相同数据类型

bitmap = np.zeros((10, 10, 3))
    
s_x = (1,2,3) ## tuple
s_y = (0,1,2) ## tuple
pixal_val = np.array([[0,0,1],[1,0,0],[0,1,0]]) ## np

bitmap[s_y, s_x] = pixal_val

plt.imshow(bitmap)

输出:

在此处输入图像描述

编辑:

它确实可以使用 numpy 数组作为坐标,但请确保它们是 int 类型

bitmap = np.zeros((10, 10, 3))

s_x = np.array([a for a in range(10)], dtype=int)
s_y = np.array([a for a in range(10)], dtype=int)
    
np.random.shuffle(s_x)
np.random.shuffle(s_y)

pixel_val = np.random.rand(10,3)

bitmap[s_y, s_x] = pixel_val

plt.imshow(bitmap)

在此处输入图像描述

最终编辑: s_x ans s_y 我在上面修复的错误方式


推荐阅读