2016-06-10 102 views
0

我有一个预先存在的算法,打印出一个矩阵的整数,表示地形到一个特定的文件。如果单个点不能被平均,算法用一个字符串替换整数(我们称之为None)。蟒蛇矩阵平均单点附近

我的目标是这样的。

任何地方a None是我想要取所有即时矩阵邻居的平均值,并将其从浮点数转换为整数。见下文......

|1 2 3| 
|4 None 5| 
|6 7 8| 

在这种情况下,我想一般是

(1+2+3+4+5+6+7+8)/8 = 4.5 = 5 

就如何推进将不胜感激任何帮助。

回答

0
for i in xrange(len(mat)): 
    for j in xrange(len(mat[i])): 
    continue if mat[i][j] is not None; 
    mat[i][j] = (sum([mat[a][b] if mat[a][b] else 0 
        for a in xrange(max(0, i-1), min(i+1, len(mat)) 
        for b in xrange(max(0, j-1), min(j+1, len(mat[i])))])/
       sum([1 if mat[a][b] is not None else 0 
        for a in xrange(max(0, i-1), min(i+1, len(mat)) 
        for b in xrange(max(0, j-1), min(j+1, len(mat[i])))])) 
+0

这是要走的路,即使它会缩小与矩阵大小。 – Alessandro

+0

出于某种原因,我无法得到这条线的工作....我不断收到语法错误。有什么建议么?? – ImmaculatePIE