2017-06-12 49 views
2

我想创建一个三个列表(一个包含蓝色变化的平均值,另一个是绿色通道,最后一个是红色通道)。但是,我无法将这三个列表分在一起。如何在保持秩序的同时将几个列表分开?

这里是什么,我想实现

a = [4,2,2,3] 
b = [4,2,1,4] 
c = [3,2,1,2] 
result = [(4/4/3), (2/2/2), (2/1/1), (3/4/2)] 

一个小例子,但这里是代码:

c_1 = [img2[92, 72]] 
c_2 = [img2[260,76]] 
c_3 = [img2[422,79]] 
c_All = [img2[92, 72],img2[260,76],img2[422,79]] 

bAvgWells = [] 
gAvgWells = [] 
rAvgWells = [] 

for center in c_All: 
    b = img2[center[0]-22: center[0]+22, center[1]-26: center[1]+26, 0] 
    g = img2[center[0]-22: center[0]+22, center[1]-26: center[1]+26, 1] 
    r = img2[center[0]-22: center[0]+22, center[1]-26: center[1]+26, 2] 
    bAvg = np.mean(b) 
    gAvg = np.mean(g) 
    rAvg = np.mean(r) 
    #Add each value from loop into list in line 54-56 
    bAvgWells.append(bAvg) 
    gAvgWells.append(gAvg) 
    rAvgWells.append(rAvg) 

avg_one = [] 
color_avg = [] 
end_b = len(bAvgWells) 
end_f = len(avg_one) 
#Divdes the list together for averages of all columns 
for i in range(end_b): 
    a = (bAvgWells[i]/gAvgWells[i]) 
    avg_one.append(a) 
for k in range(end_f): 
    b = (a[i]/rAvgWells[i]) 
    color_avg.append(b) 
print (color_avg) 

错误:

+0

如果您发布了整个错误消息,包括发生错误的代码行_,它确实会有所帮助。 –

+0

此外,在您尝试采取措施之前,请按照适当的间距“打印b,g,r”。 'center'是一个未定义的变量。 – Prune

回答

3

这就引出了一个“空片的平均”对于功能方法:

>>> from functools import reduce, partial 
>>> import operator 
>>> a = [4,2,2,3] 
>>> b = [4,2,1,4] 
>>> c = [3,2,1,2] 
>>> list(map(partial(reduce, operator.truediv), zip(a, b, c))) 
[0.3333333333333333, 0.5, 2.0, 0.375] 

或使用列表中理解表达同样的事情:

>>> [reduce(operator.truediv, z) for z in zip(a, b, c)] 
0
>>> results = zip(a, b, c) 
[(4, 4, 3), (2, 2, 2), (2, 1, 1), (3, 4, 2)] 
>>> import numpy as np 
>>> [np.mean(sequence) for sequence in results] 
[3.6666666666666665, 2.0, 1.3333333333333333, 3.0] 

另外,

>>> map(np.mean, zip(a, b, c)) 

为命名功能:

import numpy as np 

def find_averages(*inputs): 
    return [np.mean(sequence) for sequence in zip(*inputs)] 

print find_averages(a, b, c) 

样本输出:

[3.6666666666666665, 2.0, 1.3333333333333333, 3.0] 
相关问题