https://medium.com/@danielalopes97/python-memory-optimisation-and-profilling-a-deep-dive-part-2-numpy-edition-46a93325e2f9