Fastest way copying from bgl.Buffer() to numpy array
You can use the function np.frombuffer. However you first have to convert the bgl Buffer to a bytes list.
buffer_list = bytes(buffer.to_list())
imageDataNp = np.frombuffer(buffer_list, dtype=np.float32)

With your example file this method took 1.69s in contrast to 1.8s for your workaround.