UnicodeDecodeError:'ascii'编解码器无法解码位置1206中的字节0xe6:序数不在范围内(128)

时间:2016-02-09 10:48:37

标签: python numpy pickle

我有一个包含浮点数的数组W

W.dtype = float32 
type(W) = <type 'numpy.ndarray'>

然后我pickle.dump()将其转换为mr.pkl文件,

pickle.dump(W, open("/home/mr.pkl", "wb"))

但是当我加载它时,

pickle.load(open("/home/mr.pkl","rb"))

发生错误:

  

UnicodeDecodeError:'ascii'编解码器无法解码位置1206中的字节0xe6:序数不在范围内(128)

我不知道为什么,我对它持续了一个星期感到困惑,任何人都可以帮我这个吗?感谢任何帮助,非常感谢你!

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,这段代码对我有用。编码=&#39; latin1&#39;是重要的部分。

# read in data from pickle file created with Load_Data.py
pickle_file = 'mnist.pkl'
with open(pickle_file, 'rb') as f:
    train_set, valid_set, test_set = pickle.load(f, encoding='latin1')

答案 1 :(得分:0)

好的,我找到了一个解决方案,但仅限于控制台模式 步骤如下。

  1. 为什么和不能导入mnist_loader?是的,你应该把你的&#39; yourscript.py&#39;与mnist_loader.py
  2. 在同一文件夹中
  3. 为什么会出现错误&#39; ascii&#39;编解码器不能解码位置614中的字节0x90:顺序不在范围(128)&#39 ;?是的,&#39; yourscript.py&#39;与mnist_loader.py&gt;&gt;在同一文件夹中需要像我一样,如果你使用IPython,你需要下载yourscript.ipynb作为&#39; yourscript.py&#39;
  4. 如果使用P3.X,请在mnist_loader.py中重写一些内容,如下所示&#34; import _pickle as Pickle&#34;和#34; Pickle.load(f,encoding =&#39; latin1&#39;)&#34;
  5. 当您尝试从Pickle.load(...)打印或获取数据时,请转移&#39; zip&#39;从Pickle.load(...)的输出中键入列表类型,如list(train_data),...
  6. 在控制台模式下,...在mnist_loader.py文件夹中(一般为.. \ src)...&gt;&gt; Python yourscript.py
  7. 你可以看到它是可行的。例如:print(&#39; len&#39;,len(list(train_data))),它显示50000。
  8. 但是...

    <强> 7。我仍然不知道为什么它在IPython中不可行。