私はPythonが初めてです。だから私は、ジェネレーターのような凝ったものを使わずに、ループでこれをやりたいと思っています。2 つの 2D 配列があり、1 つは整数配列、もう 1 つは次のような文字列配列です。
整数 2D リスト:
ここで、dataset2d[0][0] はテーブルの行数、dataset[0][1] は列数です。したがって、以下の 2D リストには 6 行 4 列があります。
dataset2d = [ [6, 4], [0, 0, 0, 1], [1, 0, 2, 0], [2, 2, 0, 1], [1, 1, 1, 0], [0, 0, 1, 1], [1, 0, 2, 1] ]
文字列 2D リスト:
partition2d = [ ['A', '1', '2', '4'], ['B', '3', '5'], ['C', '6'] ]
partition[*][0]
つまり、最初の列はラベルです。グループ A の場合、1、2、および 4 は、dataset2d から取得して数式を適用する必要がある行番号です。つまり、1 を読み取り、行 1 に移動しdataset2d
て最初の列の値 iedataset2d[1][0]
を読み取り、次に から 2partition2d
を読み取り、データセット 2d の行 2 に移動して最初の列 ieを読み取ることを意味しますdataset2d[2][0]
。同様に次のものを読みますdataset2d[4][0]
。次に、いくつかの計算を行い、値を取得して 2D リストに格納し、それらの行の dataset2d の次の列に移動します。したがって、この例では、次に読み取られる列の値は
dataset2d[1][1]
,dataset2d[2][1]
, になりdataset2d[4][1]
ます。もう一度計算を行い、その列の値を 1 つ取得して保存します。の最後の列に到達するまでこれを行いますdataset2d
。の次の行は
partition2d
です[B, 3, 5]
。だから私はdataset2d[3][0]
、から始めますdataset2d[5][0]
。その列の値を数式で取得します。それから realなどdataset2d [3][1]
、dataset2d[5][1]
最後の列に到達するまで続きます。partition2d のすべての行が読み取られるまで、これを行います。
私が試したこと:
for partitionRow in partition2d:
for partitionCol in partitionRow:
for colDataset in dataset2d:
print dataset2d[partitionCol][colDataset]
私が直面している問題:
- partition2d は、A、B、C などの文字を含む最初の列をスキップする必要がある文字列配列です。
- partition2d で指定された行番号に対してのみ、dataset2d 列ごとに反復処理したいと考えています。したがって、colDataset は、その列の処理が完了した後にのみインクリメントする必要があります。
アップデート1:
テキストファイルからコンテンツを読み取っています.2Dリストのデータは、ファイルのコンテンツとサイズによって異なりますが、file1、つまりdataset2dとfile2、つまりpartition2dの構造は同じです。
Update2: エリックが出力がどのように見えるかについて尋ねたので。
0.842322 0.94322 0.34232 0.900009 (For A)
0.642322 0.44322 0.24232 0.800009 (For B)
これは単なる例であり、数字は私がランダムに入力したものです。したがって、最初の数値 0.842322 は、行 1、2、4 を考慮したグループ A の dataset2d[parttionCol][0] という式を dataset2d の列 0 に適用した結果です。
2 番目の数値 0.94322 は、データセット 2d の列 1 に式を適用した結果です。つまり、行 1、2、4 を考慮したグループ A のデータセット 2d[partitionCol][1] です。
3 番目の数値 0.34232 は、行 1、2、4 を考慮したグループ A のデータセット 2d[partitionCol][2] の列 2 に数式を適用した結果です。同様に、0.900009 が得られます。
2 行目の最初の数値、つまり 0.642322 は、行 3、5 を考慮したグループ B のデータセット 2d[parttionCol][0] の列 0 に式を適用した結果です。等々。