如何将2D元组列表快速转换为3D Numpy数组



我有一个来源的图像流,不幸的是,它是RGB值元组列表。我想对图像执行实时处理,但该代码需要一个形状(X,Y,3(的Numpy数组,其中X和Y是图像的高度和宽度。

X = [[(R, G, B)...]]
img_arr = np.array([*X])

上面的效果很好,但我的图像需要将近四分之一秒,这显然太慢了。有趣的是,在处理完成后,我还需要回到另一个方向,并且代码(似乎可以工作(并不那么慢:

imgout = map(tuple, flipped_image)

其他一些相关问题:

为什么将一个长的2D列表转换为numpy数组如此缓慢?

将元组列表转换为二维Numpy阵列

要回答问题的标题,numpy会自动将元组列到numpy数组中,因此您只需使用np.array(X),它将与您所能获得的速度一样快:

img_arr = np.array(X)

一个简单的列表理解将把它转换回列表-列表元组形式:

imgout = [[tuple(Z) for Z in Y] for Y in img_arr]

生成示例10x10X阵列的代码:

X = [[tuple(Z) for Z in Y] for Y in np.random.randint(0,255,(10,10,3))]

最新更新