| 17 | return bytes(array.dtype.byteorder.replace('=','<' if sys.byteorder == 'little' else '>')+array.dtype.kind,'utf-8')+array.dtype.itemsize.to_bytes(1,byteorder='little')+struct.pack(f'<B{size}I',size,*array.shape)+array.data |
| 18 | |
| 19 | def load(file): |
| 20 | if type(file) == str: |
| 21 | file=open(file,"rb") |
| 22 | header = file.read(128) |
| 23 | if not header: |
| 24 | return None |
| 25 | descr = str(header[19:25], 'utf-8').replace("'","").replace(" ","") |
| 26 | shape = tuple(int(num) for num in str(header[60:120], 'utf-8').replace(',)', ')').replace(', }', '').replace('(', '').replace(')', '').split(',')) |
| 27 | datasize = numpy.lib.format.descr_to_dtype(descr).itemsize |
| 28 | for dimension in shape: |
| 29 | datasize *= dimension |
| 30 | return np.ndarray(shape, dtype=descr, buffer=file.read(datasize)) |
| 31 | |
| 32 | def unpack(data): |
| 33 | dtype = str(data[:2],'utf-8') |