Python 2.7.9とNumpy Version 1.11.3を使用して作成した.npyファイルには、コマンドnp.save('filename')
が含まれています。このファイルは、私たちの研究所のlinux-clusterの一部である外部マシン上で生成されました。 np.load('filename.npy')
でインポートするためにローカルマシンにファイルをコピーしました。私のローカルマシンでは、Jupyter-NotebookでPython 3.5.2とNumpy Version 1.13.0を実行しています。ローカルOSはUbuntu 16.04.2です。Python 3でPython 2の.npyファイルを読み込む際のエラー
私はローカルファイルをロードしようとすると、私はエラーを取得する:私はエンコーディングを指定しようとしたいくつかのStackOverflowの質問を閲覧した後
ValueError: invalid literal for int() with base 16
:
np.load('filename.npy',encoding='latin1')
これは、同じエラーを与えます。 encoding='bytes'
利回り:
TypeError: can't multiply sequence by non-int of type 'float'
ここでは、トレースバックの大きな抜粋です:
/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のバージョン間の移行に間違っていたことを推測します。どのようにファイルをインポートすることができますか?
Python 3でPython 2 Numpyバイトコードを読み込むことはできません。その逆もできますが、試しても意味がありません。 Python 2で.npyファイルを読み込もうとしましたか?あなたが既にubuntuを使っているなら、あなたはすでにPython 2をインストールしているからです。 – cat
一般的に不可能ですか?私は前にPython 3でPython 2の.npyファイルをインポートしたと思います。すべてがスムーズに進みました。なぜ私はそれが前にエラーに至らなかったのかを確かに伝えることはできません... Python 2でファイルを読み込みます。 (ノートセルの先頭に '%% python2'を挿入します)。しかし、Python 2を使用すると、これらのファイルを使用するためにPython 3を使用するソリューションを探しているようなエラーが発生します。 –
あなたはこのファイルの内容を知っていますか?数値配列ですか?あるいは、ある種の 'オブジェクト '。エラーは 'pickle_load'にあり、後で示唆しています。 'np.save' docsには、オブジェクトを酸洗いするときのPY2/3の互換性に関するいくつかの注意があります。 – hpaulj