0

基本的に、私のコードは配列を改良します。データの次のビットが遠すぎる場合は、上下のインデックスを検索して、そのデータがそのインデックスに適しているかどうかを確認します。つまり、

def distance(x, y):
    if x > y:
        result = x - y
    else:
        result = y - x
    return result


for y in range(0,10):
    for x in range(0,10):
        newarray[y][0] = myarray[y][0]
        if distance(myarray[y][x],myarray[y][x+1]) > myerror:
            if distance(myarray[y-1][x+1],newarrayarray[y][x]) <= myerror:
                newarray[y][x+1] = myarray[y-1][x+1]
            elif distance(myarray[y-2][x+1],newarrayarray[y][x]) <= myerror:
                newarray[y][x+1] = myarray[y-2][x+1]
            elif distance(myarray[y+1][x+1],newarrayarray[y][x]) <= myerror:
                newarray[y][x+1] = myarray[y+1][x+1]
            elif distance(myarray[y+2][x+1],newarrayarray[y][x]) <= myerror:
                newarray[y][x+1] = myarray[y+2][x+1]
            else:
                newarray[y][x+1] = myarray[y][x+1]
        else:
            newarray[y][x+1] = myarray[y][x+1]

したがって、このコードは y の特定の値、より具体的には配列の中間値に対して非常にうまく機能します。明らかに y=10 には y+1 値がないため、私が抱えている問題は外側の値です。

私がしたいのは、インデックスの範囲外になった場合、エラーとして見るのではなく、設定した条件を満たさないものとして扱いたいということです。したがって、y = 10 の場合、y = 11 が存在しないためにヒストリックフィットをスローするのではなく、y = 11 を探すとき、これは真実ではないと言うだけでいいので、次の if に進みます。

これが理にかなっていることを願っています。そうでない場合はコメントしてください。解決しようとします。

4

1 に答える 1

0

必要なのは、各 if で距離計算を行う前に、テストする隣接する x または y 値が範囲内にあるかどうかをチェックし、それと距離チェックの間に論理 and を使用することです。遅延評価を使用するため、最初の条件が失敗した場合、2 番目の条件が評価されず、エラーが発生することはありません。

于 2012-11-29T17:15:36.247 に答える