diff options
-rw-r--r-- | numpy/oldnumeric/compat.py | 45 | ||||
-rw-r--r-- | numpy/oldnumeric/misc.py | 23 |
2 files changed, 49 insertions, 19 deletions
diff --git a/numpy/oldnumeric/compat.py b/numpy/oldnumeric/compat.py index 369fa5000..cd8247be8 100644 --- a/numpy/oldnumeric/compat.py +++ b/numpy/oldnumeric/compat.py @@ -6,7 +6,8 @@ __all__ = ['NewAxis', 'array_constructor', 'pickle_array', 'DumpArray', 'LoadArray', 'multiarray', # from cPickle - 'dump', 'dumps' + 'dump', 'dumps', 'load', 'loads', + 'Unpickler', 'Pickler' ] import numpy.core.multiarray as multiarray @@ -64,3 +65,45 @@ def pickle_array(a): else: return (array_constructor, (a.shape, a.dtype.char, a.tostring(), LittleEndian)) + +def loads(astr): + import cPickle + arr = cPickle.loads(astr.replace('Numeric', 'numpy.oldnumeric')) + return arr + +def load(fp): + return loads(fp.read()) + +def _LoadArray(fp): + import typeconv + ln = fp.readline().split() + if ln[0][0] == 'A': ln[0] = ln[0][1:] + typecode = ln[0][0] + endian = ln[0][1] + itemsize = int(ln[0][2:]) + shape = [int(x) for x in ln[1:]) + sz = itemsize + for val in shape: + sz *= val + dstr = fp.read(sz) + m = mu.fromstring(dstr, typeconv.convtypecode(typecode)) + m.shape = shape + + if (LittleEndian and endian == 'B') or (not LittleEndian and endian == 'L'): + return m.byteswap(True) + else: + return m + +import pickle, copy +class Unpickler(pickle.Unpickler): + def load_array(self): + self.stack.append(_LoadArray(self)) + + dispatch = copy.copy(pickle.Unpickler.dispatch) + dispatch['A'] = load_array + +class Pickler(pickle.Pickler): + def __init__(self, *args, **kwds): + raise NotImplementedError, "Don't pickle new arrays with this" + def save_array(self, object): + raise NotImplementedError, "Don't pickle new arrays with this" diff --git a/numpy/oldnumeric/misc.py b/numpy/oldnumeric/misc.py index 9d5810a13..d6e0f2430 100644 --- a/numpy/oldnumeric/misc.py +++ b/numpy/oldnumeric/misc.py @@ -1,15 +1,15 @@ # Functions that already have the correct syntax or miscellaneous functions -__all__ = ['load', 'sort', 'copy_reg', 'clip', 'Unpickler', 'rank', +__all__ = ['sort', 'copy_reg', 'clip', 'rank', 'sign', 'shape', 'types', 'allclose', 'size', 'choose', 'swapaxes', 'array_str', 'pi', 'math', 'concatenate', 'putmask', 'put', 'around', 'vdot', 'transpose', 'array2string', 'diagonal', 'searchsorted', 'copy', 'resize', 'array_repr', 'e', 'StringIO', 'pickle', - 'argsort', 'convolve', 'loads', 'cross_correlate', - 'Pickler', 'dot', 'outerproduct', 'innerproduct', 'insert'] + 'argsort', 'convolve', 'cross_correlate', + 'dot', 'outerproduct', 'innerproduct', 'insert'] import types import StringIO @@ -17,26 +17,13 @@ import pickle import math import copy import copy_reg -from pickle import load, loads from numpy import sort, clip, rank, sign, shape, putmask, allclose, size,\ choose, swapaxes, array_str, array_repr, e, pi, put, \ resize, around, concatenate, vdot, transpose, \ diagonal, searchsorted, argsort, convolve, dot, \ - outer as outerproduct, inner as innerproduct, correlate as cross_correlate, \ + outer as outerproduct, inner as innerproduct, \ + correlate as cross_correlate, \ place as insert from array_printer import array2string - - -class Unpickler(pickle.Unpickler): - def __init__(self, *args, **kwds): - raise NotImplementedError - def load_array(self): - raise NotImplementedError - -class Pickler(pickle.Pickler): - def __init__(self, *args, **kwds): - raise NotImplementedError - def save_array(self, object): - raise NotImplementedError |