colours = numpy.zeros_like(z_surface, dtype=object)
for i in range(len(z_surface)):
    for j in range(len(z_surface[0])):
        if 0.91 < numpy.sqrt(X[i, j] ** 2 + Y[i, j] ** 2) < 1.09:
            colours[i, j] = 'red'
else:
    colours[i, j] = plt.get_cmap('jet')((z_surface[i, j] - min_z) / (max_z -
        min_z))
surf = ax.plot_surface(X, Y, z_surface, rstride=2, cstride=2, facecolors=
    colours, linewidth=0, antialiased=False)
Plotting a masked surface plot using python, numpy and matplotlib