Some while ago I needed to read numpy files that contain structured arrays in C++. I wasn't entirely happy with the existing alternatives, because I could not use them on all the systems I wanted to without pulling in too many dependencies, or they didn't support nested structured arrays, and I also needed to flexibly change the zip backend (for .npz files). So, I wrote my own. I still use it occasionally even though it's not "feature complete", and thought some others might find this useful. A brief warning: this code was developed during a research project, and it might not reach the level of robustness that you need.
Cheers