で使用numpy
すると、非正方形のテーブルをインポートpython3.3
できますか? genfromtxt
次のようなファイルから読み取りたい:
題名
2 1
-0.6634 -0.3830 -0.0000 C
0.6634 0.3830 -0.0000 R
1 2 1 1
各行は . で終わります\n
。明らかに、このテーブルは正方形ではありません。loadtxt
またはで成功していませんgenfromtxt
。どちらも正方形のテーブルが必要です。例とその結果を次に示します。
>>> with open('propane.ct','r') as f:
txt = f.read()
data = np.genfromtxt(io.BytesIO(txt.encode()), delimiter='\n', dtype=None)
[b'propane.ct' b'3 2' b'-1.3268 ' b'0.0000 ' b'1.3268 -' b'1 2 1 1'
b'2 3 1 1']
と
>>> np.loadtxt('propane.ct',skiprows=1)
array([[ 3. , 2. ],
[-1.3268, -0.383 ],
[ 0. , 0.383 ],
[ 1.3268, -0.383 ],
[ 1. , 2. ],
[ 2. , 3. ]])
また
>>> np.genfromtxt('propane.ct')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/lib/npyio.py", line 1638, in genfromtxt
raise ValueError(errmsg)
ValueError: Some errors were detected !
Line #2 (got 2 columns instead of 1)
Line #3 (got 4 columns instead of 1)
Line #4 (got 4 columns instead of 1)
Line #5 (got 4 columns instead of 1)
Line #6 (got 4 columns instead of 1)
Line #7 (got 4 columns instead of 1)
ファイルはプロプライエタリ ソフトウェアによって生成されるため、最初のファイル作成時にテーブルを 2 乗することはできません。numpy
各行に列を追加して正方形にすることも考えましたが、組み込みを使用するよりも効率が悪いでしょう。
私が間違っていることはありますか、それとも独自のパーサーを作成する必要がありますか?