Source code for sekupy.preprocessing.memory
import numpy as np
from sekupy.preprocessing.base import Transformer
import logging
logger = logging.getLogger(__name__)
[docs]
class MemoryReducer(Transformer):
def __init__(self, dtype=np.float16, **kwargs):
self._dtype = dtype
Transformer.__init__(self, name='memory_reducer', dtype=dtype)
def _minify(self, array):
if np.issubdtype(array.dtype, str):
return array
elif np.issubdtype(array.dtype, float):
return np.float16(array)
elif np.issubdtype(array.dtype, int):
return self._check_int(array)
return np.float16(array)
def _check_int(self, array):
if np.abs(array).max() > 127:
dtype = np.int16
elif np.abs(array).max() > 32767:
dtype = np.int32
else:
dtype = np.int8
return dtype(array)