私はマトリックスがあります、はい、A
です。彼女の行を操作して、私はしばしば "ノックアウト"ベクターを作成する必要があります。基本的にはチャペルでノックアウトベクターを生成する方法は?
var v = [5, 4, 3, 2, 1];
v_{-2} = [5, 3, 2, 1]; // e.g. v[2] is removed
私はこの計算のために、恒久的に削除したくない、と私はA
の行に沿って、それをやりたいです。 A
上
var knockouts: [A.dim(1)] int; // list of knockout dims, as tall as A
for i in A.dim(1) {
var w = ||v_{-knockouts[i]}||/||v||
}
== UPDATE ==
より一般的な、それを維持します。それは非常に大きく、(私のように)疎です。ノックアウトされた要素は、サブポピュレートされたサブドメイン内にあると予想されますが、場合によってはそうではない可能性があります。エントリーは、多くの場合、いくつかの共通の行の操作はすべてのログが起こっていると
r = A[i,..]
s = r[3]/sum(r_{-3})
s = sum(r[3] log(r_{-3}))
s = sum(log (r_{-3}))/sum (log (r_{-5}))
あるので、r[3] = 0
を設定するのは安全ではないかもしれないが、stochastic matrixのように、確率です。しかし、それが解決策であるならば、それをカバーの下で行うための便利な機能を持たせることは、まだ良いことです。私は1つを見ることを思い出しませんが、おそらくまたは別の構文です。
"この計算のためだけに"という意味を明確にすることはできますか?ノックアウトごとに一時的な配列を作成するか、ノックアウトごとに 'A'を変更するのはあなたの意図ですか? – bencray
ブーリアンオーバーレイマスク(-ing - )に似たアイデアを使うのはどうですか? - {vector | ** 'A' **の一時的にノックアウトされたゾーンの値を隠すのに役立ちます。 – user3666197
@bencray値を取得するだけです。次に行を見るときは、行全体が必要になります。したがって、たとえば、3番目のエントリの有無にかかわらずノルムを比較します。 –