OK, I think I've managed to track the problem down a bit further:
the sort() method is failing for arrays pickled on another machine!
That is, it's definitely not sorting the array, but changing to a very
strange order (neither the way it started nor sorted).
Again, the array seems to otherwise behave fine (indeed, it even satisfies
all(a=3D=3Da1) for a pair that behave differently in this circumstance).
On 4/5/06, Andrew Jaffe <a.h.jaffe@...> wrote:
> Hi All,
> I've encountered a strange problem: I've been running some python code
> on both a linux box and OS X, both with python 2.4.1 and the latest
> numpy and matplotlib from svn.
> I have found that when I transfer pickled numpy arrays from one machine
> to the other (in either direction), the resulting data *looks* all right
> (i.e., it is a numpy array of the correct type with the correct values
> at the correct indices), but it seems to produce the wrong result in (at
> least) one circumstance: matplotlib.hist() gives the completely wrong
> picture (and set of bins).
> This can be ameliorated by running the array through
> arr=3Dnumpy.asarray(arr, dtype=3Dnumpy.float64)
> but this seems like a complete kludge (and is only needed when you do
> the transfer between machines).
> I've attached a minimal code that exhibits the problem: try
> on one machine, transfer the output file to another machine, and run
> on another, and you should see a very strange result (and it should be
> fixed if you set asarray=3DTrue).
> Any ideas?
> import cPickle
> import numpy
> import pylab
> def test(write=3DTrue,asarray=3DFalse):
> a =3D numpy.linspace(-3,3,num=3D100)
> if write:
> f1 =3D file("a.cpkl", 'w')
> cPickle.dump(a, f1)
> f1 =3D open("a.cpkl", 'r')
> a1 =3D cPickle.load(f1)
> h =3D pylab.hist(a)
> if asarray:
> a1 =3D numpy.asarray(a1, dtype=3Dnumpy.float64)
> h1 =3D pylab.hist(a1)
> return a, a1
Get latest updates about Open Source Projects, Conferences and News.