时间:2021-05-22
python3读取python2打包的npy文件会报错,原因是编码方式不同,所以只要在读取的时候加上编码方式即可。
路径中的文件是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。
浏览了一些Stackoverflow问题后,我尝试使用以下方式指定编码:
np.load('filename.npy',encoding='latin1')这给出了相同的错误。encoding='bytes'产量:
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字节码)。
与其对字节码进行逆向工程以对其进行调试,不如尝试获取生成这些文件的源。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最新的CentOS8已经内置了Python2和Python3,出入Python2和Python3两个命令可以分别进入Python2和Python3。CentOS
如何在双python下设置python3为默认在C:\Program下举例第一步安装好python2和python3后设置好环境变量第二步去掉python2根目
由于python2和python3在部分语法上不兼容,导致有人打趣道:"Python2和Python3是两门语言"对于初学者而言,如果同时安装了python2和
新搞了台linux云主机,瞎折腾折腾,先装个Python3。Linux环境下有其他软件需要Python2,如YUM,所以安装的Python3需要与Python2
想学习Python的人都会有一个困惑,那就是Python目前有两个版本Python2和Python3,Python2与Python3有何区别,两个版本该学习哪个