summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/oldnumeric/compat.py45
-rw-r--r--numpy/oldnumeric/misc.py23
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