So finden Nachbarn eine 2D-Liste in python?

Ich habe eine 2D-Liste, die nur 1 und 0:

Boundaries = [
[0,0,0,0,0],
[0,1,1,1,0],
[0,1,1,1,1],
[0,1,1,1,0],
[0,0,1,0,0]]

Brauche ich um zu testen, diese Liste zu prüfen, ob es 1 ist umgeben von 8 weiteren 1 ist (wie die Mitte 1 in dieser Liste). Wenn es eine 1 ist umgeben von 1 s als Nachbarn sollte es dann geändert werden in eine 0, so dass nach dem ausführen des Programms in der Liste oben zurückkehren würde, wie so etwas wie dieses:

[
[0,0,0,0,0],
[0,1,1,1,0],
[0,1,0,1,1],
[0,1,1,1,0],
[0,0,1,0,0]]

Ich versuche, nur einen parameter (die matrix von 1 und 0 ist). Für einige Grund, das ist eine unglaublich schwierige Sache zu wickeln meinem Kopf herum. So weit mein code sieht ungefähr so aus:

def tempBoundaries(matrixC):
    for i in matrixC:
        for j in i:
            if j == 1:
                try:
                    if matrixC[i-1]==1 or matrixC[i+1]==1:
                     .......

Dies ist ein echter Kampf, aus welchem Grund auch immer und ich scheine unfähig, herauszufinden, was zu tun, irgendwelche Tipps oder Hilfe wäre sehr geschätzt werden! Danke.

  • Schön. Sind Sie offen für mithilfe von numpy?
  • Wenn Sie brauchen, um zu öffnen, dass viele code-Blöcke, es ist ein guter Hinweis, dass Sie brauchen, um eine Methode zu erstellen - ansonsten ist der code schwierig zu verstehen, sehr schnell
  • sollten Sie verwenden convolve2d
  • Du wirst etwas finden, ähnlich wie hier stackoverflow.com/questions/12612663/...
  • Was ist, wenn Sie einen block mit 4x4-1s? Sollte nur eine der zentralen 1s geändert werden auf 0 oder alle vier?
  • Ich bin versucht, nur mit Vanille-python, numpy ist ein Nein, Nein leider nicht :/
  • alle 1 sollte 0 sein, ja.

Schreibe einen Kommentar