0

データのマトリックスの一番上のエントリ (文字列) を、各列の残りの (数値) データの変数名にしようとしています。以下を使用してファイルを開き、マトリックスを作成しました。

with open('x.dat', 'r') as f:
    row = 0
    for line in f:
        words = line.split(',')
        for col in range(len(words)):
            DataMatrix[row][col] = words[col] 
        row += 1
f.close()

ただし、文字列を取得して、数値の列で埋められるデータの「リスト」の変数名として認識させる方法がわかりません。これは、私が作っているよりも簡単でなければなりません。何か助けはありますか?

データ ファイルは次のようになります: ... (形式を正しく表示できないようですが、各 [] は行であり、行は互いに積み重ねられています)
['% Time','FrameNo', 'バージョン','X','Y','Z',…] ['66266.265514','948780','2.5','64','0','30'…] [66266.298785','948785 '、2.5'、'63'、'0'、'32'、…] …</p>

4

2 に答える 2

1

あなたが探しているのは、python のvars組み込み関数です。これによりdict、スコープ内の変数を表すことができます。

このソリューションを追加するのに十分なほどあなたの例のコードに従っていませんが、役立つかもしれない変数を使用した例を次に示します。

# Set up some data (which would actually be read from a file in your example)
headers = ['item', 'quantity', 'cost']
data = [['dress', 'purse', 'puppy'], [1, 2, 15], [27.00, 15.00, 2.00]]

for i in range(len(headers)):
  name = headers[i]
  value = list()
  for data_item in data[i]:
    value.append(data_item)
  # This sets the name of the header to the name of a variable
  vars()[name] = value

# Print to prove that vars() worked
print 'Items', item
print 'Quantities', quantity
print 'Costs', cost

次の出力が生成されます。

Items ['dress', 'purse', 'puppy']
Quantities [1, 2, 15]
Costs [27.0, 15.0, 2.0]
于 2012-12-18T20:48:18.943 に答える
0

int機能を使用する

with open('x.dat', 'r') as f:
    row = 0
    for line in f:
        words = line.split(',')
        for col in range(len(words)):
            DataMatrix[row][int(col)] = words[int(col)] 
        row += 1
f.close()

または、 CSV リーダーを使用して、これをわずかに簡単にすることもできます。

with open('x.dat', 'rb') as csvfile:
    theReader = csv.reader(csvfile, delimiter=',')
    row=0;
    for line in theReader:
        row+=1
        for col in range(len(line)):
             DataMatrix[row][int(col)] = words[int(col)] 
于 2012-12-18T17:36:29.903 に答える