0
A.append([(float(a) + float(b) + float(c))/3,
    (float(d) + float(e) + float(f))/3,
    (float(g) + float(h) + float(i))/3,
    (float(j) + float(k) + float(l))/3,
    (float(m) + float(n) + float(o))/3,
    (float(p) + float(q) + float(r))/3,
    (float(s) + float(t) + float(u))/3])

给我一个像这样显示的 7 个值的输出

[[-9999.0, -9999.0, -9999.0, -9999.0, -9999.0, -9999.0, -9999.0], [-9999.0, -9999.0, -6665.9694239999999, -9999.0, -9999.0, -9999.0, -9999.0], [0.040896999999999996, 0.018690666666666664, 0.016837666666666667, -9999.0, 0.038722666666666669, 0.018323666666666669, -9999.0], [0.039443666666666662, 0.017517666666666667, 0.013396, -9999.0, 0.035526333333333333, 0.011692666666666665, -9999.0], [-9999.0, 0.017963666666666666, 0.017425333333333334, -9999.0, 0.037885000000000002, 0.014316333333333334, -9999.0]]

我想遍历每列下的这些 7 个数字组,并检查两个数字之间的差异是否不大于 0.03,如果用 -9999.00 替换较大的数字。我不确定如何比较来自不同行的相同元素,以及如果我需要替换其中一个数字如何去做。我在想某种计数来表示行,但我很不确定如何继续前进。我是 python 新手,所以感谢您的帮助和耐心。

4

1 回答 1

1

未经测试,但这应该可以

rows = myListOfRows
for col in xrange(len(rows[0])):
    checkCol(rows, col)

def checkCol(rows, c):
    for r in xrange(len(rows)-1):
        if rows[r][c] != -9999 or -9999 != rows[r+1][c]: # checking for elements that are not already -9999.00
            if abs(rows[r][c] - rows[r+1][c]) > 0.03:
                rows[max([r,r+1], key=lambda rr: rows[rr][c])][c] = -9999.00
于 2013-07-15T19:23:17.787 回答