有效地将一组 {coordinate+value} 绘制到(numpy 数组)位图
Efficiently plot set of {coordinate+value}s to (numpy array) bitmap
假设我有一组像素值,例如
> S[42]
6, 2, (0.1, 0, 0)
^ 此处第 42 个条目用于像素位置 (6,2)
,颜色为暗红色。
如何有效地将 S
绘制到新的 numpy 位图数组 bitmap = np.zeros((1024, 768, 3))
中?
是否有矢量化解决方案(而不是 for
循环)?
如果有帮助,我可以将 S
按列拆分为 S_x
、S_y
和 S_RGB
。
这就是你的做法,是的,拆分很有帮助,并使用我下面的相同数据类型
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 我在上面修复的错误方法
假设我有一组像素值,例如
> S[42]
6, 2, (0.1, 0, 0)
^ 此处第 42 个条目用于像素位置 (6,2)
,颜色为暗红色。
如何有效地将 S
绘制到新的 numpy 位图数组 bitmap = np.zeros((1024, 768, 3))
中?
是否有矢量化解决方案(而不是 for
循环)?
如果有帮助,我可以将 S
按列拆分为 S_x
、S_y
和 S_RGB
。
这就是你的做法,是的,拆分很有帮助,并使用我下面的相同数据类型
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 我在上面修复的错误方法