[Numpy-discussion] npz load on numpy 3
Pauli Virtanen
pav at iki.fi
Tue Mar 29 04:37:00 EDT 2011
Tue, 29 Mar 2011 08:27:52 +0000, Pauli Virtanen wrote:
> Tue, 29 Mar 2011 04:16:00 -0400, josef.pktd wrote:
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> File "C:\Programs\Python32\lib\site-packages\numpy\lib\npyio.py",
>> line 222, in __getitem__
>> return format.read_array(value)
>> File "C:\Programs\Python32\lib\site-packages\numpy\lib\format.py",
>> line 449, in read_array
>> array = pickle.load(fp)
>> UnicodeDecodeError: 'ascii' codec can't decode byte 0xf0 in position 6:
>> ordinal not in range(128)
> [clip]
>> Any ideas ?
>
> There's some open() call that opens the file in text mode rather than in
> binary mode, I guess.
Ah, that's not it. The problem is that pickled Numpy arrays are not
backward compatible between Python 2 and 3 because of the string vs.
unicode change --- the pickle.load() call should specify an encoding eg.
pickle.load(fp, encoding='latin1').
This needs to be wrapped in a try-expect block so that it tries to load
it with encoding='latin1' if the first attempt fails.
--
Pauli Virtanen
More information about the NumPy-Discussion
mailing list