Simple uncompressed single ndarray format read/written by np:load/np:save
savez in the current numpy is just writing the arrays to temp files with numpy.save, and then adds them to a zip file (with or without compression).
If you’re not using compression, you might as well skip step 2 and just save your arrays one by one, and keep all 4000 of them in a single folder.
numpy source and searches suggests npz (which packs multiple arrays into a single uncompressed zip container) has a very slow temporary file writing implementation. Speed not such a problem for initialization of the propagator, but might as well avoid learning to navigate zip files in C++ and instead just learn directory traversal.