我试图将图片转换为rgb值的平面列表。例如,如果我们有(3,3)图像碰巧必须遵循rgb矩阵:
(5,10,12)(13,16,12)(10,14,2)
(6,3,6)(13,14,15)(50,60 210)
(12,15,19)(20,13,27)(100,200,210)
我想快速做的是产生: [5,10,12,13,16,12,10,14,2, 6,3,6,13,14,15,50,60 210, 12,15,19,20,13,27,100,200,210]
这是我目前正在做的事情
def flatten(matrix):
def decompose(row):
retrow = []
for item in row:
retrow = retrow + item
return retrow
retlist = []
for row in matrix:
retlist = retlist + decompose(row)
return retlist
curimg = #load in the pillow img
curimg = np.array(curimg).tolist()
curimg = flatten(curimg)
我正在为机器学习应用程序执行此操作,并且我需要执行此操作的大量图像。我非常确定我的渐近运行时很好,但我想确保我不会这样做不必要地慢。
答案 0 :(得分:2)
您可以直接压缩numpy数组,而无需复制数据:
flat_img = np.array(curimg).ravel()
答案 1 :(得分:0)
根据我的理解,我认为您可以使用[chain][1]
中的itertools
,如下所示:
my_tuple = [(5, 10, 12),(13, 16, 12),(10, 14, 2),(6, 3, 6), (13, 14, 15), (50, 60, 210),(12, 15, 19), (20, 13, 27), (100, 200, 210)]
from itertools import chain
x = chain(*my_tuple)
print list(x)
OUTPUT:
[5, 10, 12, 13, 16, 12, 10, 14, 2, 6, 3, 6, 13, 14, 15, 50, 60, 210, 12, 15, 19, 20, 13, 27, 100, 200, 210]