This all looks costly in complexity, and in lines of Python if statements... 
I find myself wondering if we couldn't replace ```self._header_longs``` and ```self._header_floats``` with a single ```self._header``` that is a simple Python list -- **not** numpy.
Presumably that would be quicker to access, in addition to making all this bit simpler.
To avoid converting from numpy array to Python lists, we would need to load the data differently in ```field_gen```.
But just maybe that could be better all round ??