Having problems with python int types specifying mesh faces again
Pretty cool script btw, doing this worked:

faces = [ [int(i) for i in thing] for thing in a]
verts = [ thing for thing in zip(X.flatten(), Y.flatten(), Z.flatten())]


or

faces = np.arange(7*6).reshape(7,6).tolist()
verts = [ thing for thing in zip(X.flatten(), Y.flatten(), Z.flatten())]


But I imagine there's a faster way to cast down to regular python ints from Numpy -- That is however really a Numpy/Python problem and not BPY/Blender. I doubt that in this scenario speed is of the utmost importance.