にint型の読み取りに失敗しましたnumpy.loadtxtは、私は現在、MWEの目的のために、のように見える、データファイルを持って、私はいくつかの比較的単純なPythonの2つのモジュールは、Python 3と互換性があることを確認してくださいしようとしているのPython 3
n
0
次のスニペットは、基本的には同じコードではPython 2.7と3.5の両方にnames=True
でgenfromtxt
のような動作を取得するための回避策であるのPython 2.7、と正常に動作します。 Pythonの3.5で
import numpy as np
with open('bad_int.data', 'rb') as f: lines = f.readlines()
data = np.loadtxt(lines[1:2], dtype=[('n', int)])
、私はこのようなファイルをロードする他の方法がある知っているが、それは持っているので、私は、現在の行でファイルをスライスするためにバインドされていますエラーに
Traceback (most recent call last):
File "bad_int3.py", line 5, in <module>
data = np.loadtxt(lines[1:2], dtype=[('n',int)])
File "/usr/lib64/python3.5/site-packages/numpy/lib/npyio.py", line 938, in loadtxt
X = np.array(X, dtype)
ValueError: invalid literal for int() with base 10: "b'0'"
を取得複数の配列。私は先導b
が意味するもの(バイナリ?)を見つけようとしていますが、運はまだありません。ですから、このエラーが出ることなくPython 2.7と3.5でこの種のデータをどのように読むことができますか?
編集
私は複数のフィールドがある場合、すべてが正常に動作していることに気付きました。したがって、たとえば、
data = np.loadtxt(lines[1:2], dtype=[('n', int), ('m', int)])
へ
n m
0 0
と最後の行にデータが変更された場合、その後のすべては、Python 2.7と3.5で完璧に動作します。 PY3で
あなたの入力ファイルは本当ですか? –
Emacsを使用して自分自身でMWEの例を作成しました。私は 'echo -e" n \ n0 "> bad_int.data'でファイルに送信しようとしました。 – Warrick
理想的には、フィールドの名前がファイルから 'n'であると自動的に推測したいと思いますが、私はそれをかなり簡単に行うことができます。だから、 '0'を読むだけで十分です。しかし、データがファイルの先頭になくても、必ずしも最後になるわけではありません。 – Warrick