python numpy mmaped 파일과 np.save 파일의 차이. np.array을 저장한 np.save 파일에는 단지 128바이트의 헤더만 붙어있고 엔디안과 내용이 일치한다.
헤더는 아마도 배열의 차원, 길이, 데이터형식, 패딩 일 것이다.
즉 np.save 로 저장한 nd.array는 np.memmap으로 접근이 가능하다.
단, np.memmap에게 알려주는 shape에 128바이트 만큼 길이를 확장해주고, a = a[128:] 으로 헤더를 컷해서 쓰면 똑같다는 뜻.
여기서 128은 바이트이므로 shape의 sizeof(dtype)을 나눠서 계산해야 한다.
... 라고 쓰고 아니 잠깐만 나의 파이썬이 이렇게 귀여울리가 없어하고 뒤져보니.. 내부 함수로 그냥 있다..
즉, np.save로 저장한 np.array는 shape와 dtype을 따로 저장해 둘 필요없이 np.lib.format.open_memmap으로 읽으면 shape 정보를 반영하여 mmap 접근이 가능하다.