我有一个numpy
形状数组(N,)
,它包含N个压缩的rgb值,使用以下公式-
rgb = (r<<16) + (g<<8) + b
我试图解压这个数组,然后使用解压后的值创建一个numpy
形数组(N,3)
。请参见下面的代码片段-
import numpy as np
def unpack_rgb(rgb):
b = rgb & 255
g = (rgb >> 8) & 255
r = (rgb >> 16) & 255
return r, g, b
N = 10
c = (np.ones((N, 3)) * 255).astype(np.uint8)
for i in range(N):
c[i, 0], c[i, 1], c[i, 2] = unpack_rgb(colors[i])
如上所示,在for
循环中使用unpack_rgb
将颜色值分配给numpy数组c
。我正在寻找解包和创建新numpy数组的pythonic方法。
变量colors
可以通过以下代码获得-
from random import randint
def pack_rgb(r, g, b):
rgb = (r<<16) + (g<<8) + b
return rgb
colors = np.array([pack_rgb(randint(0, 255), randint(0, 255), randint(0, 255)) for _ in range(N)])
好像
c
没用?只需在默认的np.array
构造函数中使用元组您可以在整个numpy数组上运行逐位运算符,然后使用
np.dstack
获得(r,g,b)元组,如下所示:相关问题 更多 >
编程相关推荐