parent
7eb13b14cb
commit
15c89fb9b5
|
@ -0,0 +1,28 @@
|
||||||
|
class Packer:
|
||||||
|
"""A compression object used to speed up model calculations.
|
||||||
|
|
||||||
|
Often used in conjunction with crossvalidation and perturbations
|
||||||
|
analysis.
|
||||||
|
"""
|
||||||
|
def __init__(self,array):
|
||||||
|
self._shape = array.shape
|
||||||
|
self._array = array
|
||||||
|
self._packed_data = None
|
||||||
|
|
||||||
|
def expand(self,a):
|
||||||
|
if self._inflater!=None:
|
||||||
|
return dot(self._inflater,a)
|
||||||
|
|
||||||
|
def collapse(self,axis=None,mode='svd'):
|
||||||
|
if not axis:
|
||||||
|
axis = argmin(self._array.shape) # default is the smallest dim
|
||||||
|
|
||||||
|
if axis == 1:
|
||||||
|
self._array = self._array.T
|
||||||
|
u, s, vt = svd(self._array,full_matrices=0)
|
||||||
|
self._inflater = vt.T
|
||||||
|
self._packed_data = u*s
|
||||||
|
return self._packed_data
|
||||||
|
|
||||||
|
def get_packed_data(self):
|
||||||
|
return self._packed_data
|
Reference in New Issue