How to define a subdomain using material data (from data file)?

First of all, does your mesh consist of triangles or quadrilaterals?
Secondly, is your mesh uniform and structured (i.e. is it a RectangleMesh with 100 x 100 cells?)

I would suggest something like:

from dolfin import *
import numpy as np
mesh = UnitSquareMesh(100, 100)

V = FunctionSpace(mesh, "DG", 0)
u = Function(V)

dx = 1/100

values = np.arange(100*100)
local_values = np.zeros_like(u.vector().get_local())
for cell in cells(mesh):
    midpoint = cell.midpoint().array()
    i = int(midpoint[0] // dx)
    j = int(midpoint[1] // dx)
    pos = i + (j+1)
    local_values[cell.index()] = values[pos]
    print(midpoint, i, j , pos)

u.vector().set_local(local_values)

File("u.pvd") << u