私は、ファイルに保存する(10000x10000のような)非常に大きな行列を持っています。それはゼロをたくさん持っているので、だから、明らかにそれは無用メモリのかなり多くを取ります。
私は、このような行列を格納するための方法ウィキペディアで見つかりました:
https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_row_(CSR,_CRS_or_Yale_format)
私は行列にリンクされている3つの配列を取得することができました。しかし、今、私は反対をしたい:これらの3つの配列を考えると、私は元の行列を復元したいと思います。私は(まあ、それは、配列JAに与えられています)何列で、私は、配列Aの要素を配置する必要があります知っているが、私はそれらを配置すべき行何で分かりません。
すべてのヘルプしてください?
どうもありがとう。
でそれらを置くためにどの行出て作業するには、IAとA.を使用する必要があります
仕事の後方やリストを計算します
IA' = {IA[m+1] - IA[m], IA[m] - IA[m-1], IA[m-1] - IA[m-2],..., IA[2]-IA[1], IA[1]-IA[0]}
リストIAは」行列の一番下の行に追加するAのエントリ数を教えてくれます。
あなたは既にJ.を使用して、それらを追加する場所を知っています
そう
IA' = [4-3, 3-2, 2-0, 0]
IA' = [1,1,2,0]
下に記載されているウィキペディアの例:
A = [5,8,3,6]
IA = [0,0,2,3,4]
JA = [0,1,2,1]
手段Aの最後の要素は、一番下の行に行くこと、最後に第二は、その行から上に進み、Aの第2の要素は、3行までに行きます。上部の行にはエントリがありません。
あなたが代わりに行を下に作業し、このようにそれを解釈できるよう 『」IA』にIAを逆にすることは、実装がより簡単になるかもしれません。
IA'' = [0,2,1,1]
A = [5,8,3,6]
一番上の行に、0エントリ。次の行は、2つのエントリ[5,3]を有しています。次の2は、それぞれ1つのエントリそれぞれ、[3]、[6]を有します。