In [ ]:
import numpy as np

In [ ]:
matStr = """
131,673,234,103,18
201,96,342,965,150
630,803,746,422,111
537,699,497,121,956
805,732,524,37,331"""

def parseMat(s, dim):
    # Parse but leave space for easier calculation
    mat = np.empty((dim, dim), dtype=np.int)
    for i, line in enumerate(s.strip().splitlines()):
        mat[:,i] = np.asarray(list(map(int, line.split(","))))
    return mat

mat = parseMat(matStr, 5)

In [ ]:
dim = 5
UP = 1; DOWN = 2; RIGHT = 4
flagmat = np.zeros_like(mat) # OR of UP/DOWN/RIGHT
for x in range(dim):
    for y in range(dim):
        u = mat[x, y - 1] if y > 0 else 1e6
        d = mat[x, y + 1] if y < dim - 1 else 1e6
        r = mat[x + 1, y] if x < dim - 1 else 1e6
        m = min(u,d,r)
        if u == m: flagmat[x,y] |= UP
        if d == m: flagmat[x,y] |= DOWN
        if r == m: flagmat[x,y] |= RIGHT

In [ ]:
flagmat.T

In [ ]:
mat.T