使用python3怎么读取python2中npy的文件

  介绍

这篇文章给大家介绍使用python3怎么读取python2中npy的文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

python3读取python2打包的npy文件会报错,原因是编码方式不同,所以只要在读取的时候加上编码方式即可。

解决方法

docs_train =, np.load(& # 39;。/数据/20 news_clean/train.txt.npy& # 39;,, allow_pickle=True,,编码=& # 39;字节# 39;)   docs_test =, np.load(& # 39;。/数据/20 news_clean/test.txt.npy& # 39;,, allow_pickle=True,,编码=& # 39;字节# 39;)

路径中的文件是python2打包的。

<强>补充:在Python 3中加载Python 2 .npy文件时出错

我有。npy文件,它们是使用Python 2.7.9和Numpy版本1.11.3通过命令创建的np.save(& # 39;文件名# 39;)。这些文件是在外部计算机上生成的,该外部计算机是我们研究所的linux集群的一部分。

我将文件复制到本地计算机上,以便通过导入它们np.load (& # 39; filename.npy& # 39;)。在我的本地计算机上,我正在运行带有Jupyter-Notebook的Python 3.5.2和Numpy版本1.13.0。

本地操作系统是Ubuntu 16.04.2。

当我尝试在本地加载文件时,出现错误:

ValueError:, invalid  literal  for  int (), with  base  16

浏览了一些Stackoverflow问题后,我尝试使用以下方式指定编码:

np.load (& # 39; filename.npy& # 39;,编码=& # 39;latin1& # 39;)

这给出了相同的错误.encoding=& # 39;字节# 39;产量:

TypeError:,停下来# 39;t  multiply  sequence  by  non-int  of  type  & # 39;浮动# 39;

这是回溯的较大片段:

/usr/地方/lib/python3.5/dist-packages/Numpy/lib/npyio.py 负载拷贝(mmap_mode,文件,还以为,allow_pickle, fix_imports,,编码)   417,,,,,,,其他的:   418,,,,,,,,,return  format.read_array (fid,, allow_pickle=allow_pickle,   ——祝辞,419,,,,,,,,,,,,,,,,,,,,,pickle_kwargs=pickle_kwargs)   420,,,,,其他的:   421,,,,,,,#,Try  a 泡菜/usr/local/lib/python3.5/dist-packages/numpy/lib/format.py  read_array拷贝(fp, allow_pickle,, pickle_kwargs)   638,,,,,,,pickle_kwargs =, {}   639,,,,,试一试:   ——祝辞,640,,,,,,,array =, pickle.load (fp, * * pickle_kwargs)   641,,,,,except  UnicodeError  as 错:   642,,,,,,,if  sys.version_info[0],祝辞=,3:/usr/local/lib/python3.5/dist-packages/sympy/核心/numbers.py  __new__拷贝(cls, num,,前的)   823,,,,,,,,,其他的:   824,,,,,,,,,,,_mpf_ =, mpmath.mpf (   ——祝辞,825,,,,,,,,,,,,,S.NegativeOne * * num [0] * num [1] * 2 * * num ._mpf_ [2])   826,,,,,elif  isinstance (num,浮点数):   827,,,,,,,_mpf_ =num._mpf_      TypeError:停下来# 39;t  multiply  sequence  by  non-int  of  type  & # 39;浮动# 39;

我猜想在Python和Numpy版本之间的转换时,编码有问题。关于如何导入文件的任何想法?

解决方案

如中所示,* .npy中数据的存储方式是什么?。npy文件为字节码,如果您在十六进制编辑器中打开一个字节码,则会看到该文件。

Python 2字节码.pyc,。巴西文件无法在Python 3中运行,因为虚拟机和编译器内部版本已随主要版本更改。

同样,NumPy的C内部结构和字节码编译器在Python 3中也发生了变化,从而破坏了向后兼容性。(这是有意的,因为字节码并不是要持续那么长时间,或者不能与所创建的版本一起使用。)

这些变更的组成意味着,如果不对Python 3的字节码解释器和Python 3的NumPy进行大的更改,和/或从Python 2 NumPy字节码到Python 3的转译器,则无法使用这些Python 2 .npy文件,Python 3。

正如我之前提到的,这有点像X/Y问题。您不应该依赖。npy文件在各个版本之间工作,因为不能保证它们会保持一致,因为它们本质上是易失性格式(例如Python VM字节码)。

关于使用python3怎么读取python2中npy的文件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

使用python3怎么读取python2中npy的文件