python3 如何读取python2的npy文件

 更新时间:2021年3月27日 00:00  点击:2446

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

解决方法

docs_train = np.load('./data/20news_clean/train.txt.npy', allow_pickle=True, encoding='bytes')
docs_test = np.load('./data/20news_clean/test.txt.npy', allow_pickle=True, encoding='bytes')

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

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

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

我将文件复制到本地计算机上,以便通过导入它们np.load('filename.npy')。在我的本地计算机上,我正在运行带有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('filename.npy',encoding='latin1')

这给出了相同的错误。encoding='bytes'产量:

TypeError: can't multiply sequence by non-int of type 'float'

这是Traceback的较大片段:

/usr/local/lib/python3.5/dist-packages/numpy/lib/npyio.py in load(file, mmap_mode, allow_pickle, fix_imports, encoding)
417       else:
418         return format.read_array(fid, allow_pickle=allow_pickle,
--> 419                     pickle_kwargs=pickle_kwargs)
420     else:
421       # Try a pickle

/usr/local/lib/python3.5/dist-packages/numpy/lib/format.py in read_array(fp, allow_pickle, pickle_kwargs)
638       pickle_kwargs = {}
639     try:
--> 640       array = pickle.load(fp, **pickle_kwargs)
641     except UnicodeError as err:
642       if sys.version_info[0] >= 3:

/usr/local/lib/python3.5/dist-packages/sympy/core/numbers.py in __new__(cls, num, prec)
823         else:
824           _mpf_ = mpmath.mpf(
--> 825             S.NegativeOne**num[0]*num[1]*2**num[2])._mpf_
826     elif isinstance(num, Float):
827       _mpf_ = num._mpf_

TypeError: can't multiply sequence by non-int of type 'float'

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

解决方案

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

Python 2字节码.pyc,.pyo文件无法在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字节码)。

与其对字节码进行逆向工程以对其进行调试,不如尝试获取生成这些文件的源。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。如有错误或未考虑完全的地方,望不吝赐教。

[!--infotagslink--]

相关文章

  • Python3 实现将bytes图片转jpg格式

    这篇文章主要介绍了Python3 实现将bytes图片转jpg格式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-08
  • Python3中小括号()、中括号[]、花括号{}的区别详解

    这篇文章主要介绍了Python3中小括号()、中括号[]、花括号{}的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-15
  • Python3 常用数据标准化方法详解

    这篇文章主要介绍了Python3 常用数据标准化方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-24
  • 浅谈Python3中print函数的换行

    这篇文章主要介绍了浅谈Python3中print函数的换行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-05
  • 解决python3安装pandas出错的问题

    这篇文章主要介绍了解决python3安装pandas出错的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-05-20
  • python3 sqlite3限制条件查询的操作

    这篇文章主要介绍了python3 sqlite3限制条件查询的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-07
  • python3 循环读取excel文件并写入json操作

    这篇文章主要介绍了python3 循环读取excel文件并写入json操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-14
  • 解决python3 中的np.load编码问题

    这篇文章主要介绍了解决python3 中的np.load编码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-27
  • python3 如何读取python2的npy文件

    这篇文章主要介绍了python3 读取python2的npy文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-27
  • 基于python3+OpenCV实现人脸和眼睛识别

    这篇文章主要为大家详细介绍了基于python3+OpenCV实现人脸和眼睛识别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
  • python3+openCV 获取图片中文本区域的最小外接矩形实例

    这篇文章主要介绍了python3+openCV 获取图片中文本区域的最小外接矩形实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-03
  • win10系统下python3安装及pip换源和使用教程

    这篇文章主要介绍了win10系统下python3安装及pip换源和使用教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-04-30
  • python实现npy格式文件转换为txt文件操作

    这篇文章主要介绍了python实现npy格式文件转换为txt文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-01
  • 新手学习Python2和Python3中print不同的用法

    在本篇文章里小编给大家分享的是关于Python2和Python3中print不同的用法,有兴趣的朋友们可以学习下。...2020-06-10
  • 解决python3 整数数组转bytes的效率问题

    这篇文章主要介绍了解决python3 整数数组转bytes的效率问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-08
  • Python3爬虫里关于代理的设置总结

    在本篇文章里小编给大家整理的是一篇关于Python3爬虫里关于代理的设置总结,需要的朋友们可以参考下。...2020-07-31
  • python3中类的重点与难点:类属性和实例属性的区别说明

    这篇文章主要介绍了python3中类的重点与难点:类属性和实例属性的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-02
  • Python3利用openpyxl读写Excel文件的方法实例

    这篇文章主要给大家介绍了关于Python3利用openpyxl读写Excel文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-04
  • Python3实现打格点算法的GPU加速实例详解

    这篇文章主要给大家介绍了关于Python3实现打格点算法的GPU加速的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友可以参考下...2021-09-09
  • Windows下python3安装tkinter的问题及解决方法

    这篇文章主要介绍了Windows下python3安装tkinter问题及解决方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-04-30