0

それぞれがほぼ同じ行列を含む多くの csv ファイルがあります。各行列は、5 行または 6 行の 11 列です。列は変数で、行はテスト条件です。一部のマトリックスには、最後のテスト条件のデータが含まれていません。これが、一部のマトリックスに 5 行、他のマトリックスに 6 行ある理由です。

私のアプリケーションは、python 2.6 で numpy と sciepy を使用しています。

私の質問は次のとおり
です。すべての同一の行列にわたる各セルの平均を含む要約行列を最も効率的に作成するにはどうすればよいですか?

要約マトリックスは、要約マトリックスの各セルの値が、他のすべてのマトリックスの同じセルに格納された値の平均であることを除いて、他のすべてのマトリックスと同じ構造を持ちます。1 つのマトリックスに最後のテスト条件のデータが含まれていない場合、平均化が行われたときにその内容がゼロとして扱われないようにしたいと考えています。つまり、ゼロ以外のすべての値の平均が必要です。

このコードを構成する簡単で柔軟な方法を誰かに教えてもらえますか?

すべての csv ファイルを取り込む方法と、出力を書き込む方法を知っています。Python配列を使用するかnumpy配列を使用するか、操作を構造化する方法など、スクリプトでデータの流れを構造化する最も効率的な方法がわかりません。

これをさまざまな方法でコーディングしようとしましたが、後でこのコードを他のデータ構造に使用したい場合、それらはすべてかなりコード集約的で柔軟性に欠けているようです。

4

1 に答える 1

2

マスクされた配列を使用できます。N は csv ファイルの数だとします。すべてのデータを形状 (N,11,6) のマスク配列 A に格納できます。

from numpy import *
A = ma.zeros((N,11,6))
A.mask = zeros_like(A) # fills the mask with zeros: nothing is masked
A.mask = (A.data == 0) # another way of masking: mask all data equal to zero
A.mask[0,0,0] = True # mask a value
A[1,2,3] = 12. # fill a value: like an usual array

次に、最初の軸に沿った平均値は、マスクされた値を考慮して、次のように与えられます。

mean(A, axis=0) # the returned shape is (11,6)
于 2010-10-11T12:09:35.190 に答える