からnumpyの配列を読み取る:行列とベクトルのパイソン - 私は次のようにフォーマットする入力ファイルを有するファイル
* 1 *
[[1.0 2.0 3.0 4.0] [ 5.0 6.0 7.0 8.0]] [1.5 2.5 3.5]
* 2 *
[[8.0 7.0 6.0 5.0] [ 1.0 2.0 3.0 4.0]] [4.5 5.5 6.5]
サイズは知られていません。星、行列、ベクトルの内部の数値を3つの異なる変数(it
,mtx
、vect
)に変換したいと思います。
numpy.arrayの行列とベクトルを簡単に読み取る方法があるかどうかを知りたいですか? 行列の番号がmtx
で、ベクトルがvect
の行の場合、星の中の数字を得ることに成功しましたが、すばやく適切な方法を見つけることができません。ここで
私はベクトルを取得しようとしているが、私はこのエラーValueError: setting an array element with a sequence.
持ってる私のコードのサンプル、:誰かがベクトル(あるいは少なくともその読み方を私に言うことができる場合
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy
import re
def read(filename):
it = 0
with open(filename, 'r') as f:
for line in f:
if line[0] == '*':
it += 1
v_it = numpy.zeros((it)).astype(numpy.int32)
mtx = numpy.array((it,)).astype(numpy.float32)
vect = numpy.array((it,)).astype(numpy.float32)
a = 0
with open(filename, 'r') as f:
for line in f:
if line[0] == '*':
print int(line[2:-2])
v_it[a] = int(line[2:-2])
elif line[:2] == '[[':
idx = line.index(']]')
line = line[idx+4:-2]
line = re.sub(r'\s+', ' ', line)
vect[a] = numpy.fromstring(line, dtype=numpy.float32, sep=' ')
print vect[a]
elif line == '':
a += 1
print a
print vect
if __name__ == "__main__":
read('input.txt')
を使用するlibrairy)、私は同様に行列を読むことができるはずです。 何か助けていただければ幸いです
ファイル形式は何ですか? –
ファイルはいくつかの結果を含むテキストファイル( '* .txt')です(単純化のために私の要求の始めに正確なフォーマットを入れています)。行列とベクトルには浮動小数点数が含まれます。星の中の数字は整数です。あなたの質問に答えてほしい – Nuageux