2017-01-18 6 views
1

私は10000アイテムを持っているので、10000行* 10000列の行列を作成する必要があります。 1つの次元配列を使用すると、膨大な量になります。 また、セル(i、j)に値を設定したい場合は、0 < i、j <10000となるので、繰り返しが多くなります。JavaScriptで大きな行列を保存/読み込む最も良い方法は何ですか?

私は何か考えを思い付くことができませんでした。 ノード/ javascriptでこれを行うにはどうすればよいですか? 0が値を意味していないところ

+0

あなたはデータが持っているものの密度、あなたは一般的にそれを行うと頻度どのような操作のために使用される行列であるかを説明でした等。? –

+0

@RomanHockeアイテムベースの推奨システムの評価マトリックスです。私は約10000の映画を持つmovielensデータセットを使ってそのようなシステムを開発しようとしていました。 – arslan

答えて

3

すべての例には、次の行列を表します。

| - - - - - - - | 
| 0 | 0 | 2 | 4 | 
| - - - - - - - | 
| 1 | 0 | 0 | 3 | 
| - - - - - - - | 
| 0 | 2 | 4 | 6 | 
| - - - - - - - | 
| 5 | 0 | 2 | 0 | 
| - - - - - - - | 

あなたは、メモリ内のすべてのセルが必要な場合は、10,000×10,000サイズで2次元配列を維持する必要があるので、私はその周りに道を見ない。

オプション1例(行& colsのゼロベースとする):いない場合は、例えばxyプロパティを使用して、指定されたセルを指す目的で、一次元アレイを維持することができ

var matrix = [[0,0,2,4],[1,0,0,3],[0,2,4,6],[5,0,2,0]]; 

オプション2例(行& colsのを簡単にするために1をベースとしている):

var matrix = [ 
    {x: 3, y: 1, value: 2}, 
    {x: 4, y: 1, value: 4}, 
    {x: 1, y: 2, value: 1}, 
    {x: 4, y: 2, value: 3}, 
    {x: 1, y: 3, value: 2}, 
    {x: 2, y: 3, value: 4}, 
    {x: 3, y: 3, value: 6}, 
    {x: 1, y: 4, value: 5}, 
    {x: 3, y: 4, value: 2} 
]; 

あなたは高速&アクセスを検索する必要がある場合は、オブジェクトを使用することができ、オブジェクトのプロパティ名は、例えばrow指標であり、各プロパティ値は、プロパティとしてcolumnインデックスを持ち、その値がセル値であるオブジェクトです。 オブジェクトプロパティは数値を表す文字列であることに注意してください。数値はプロパティ名として使用できないためです。

オプション3例(行& colsのを簡単にするために1をベースとしている):

var matrix = { 
    '1': { 
     '3': 2, 
     '4': 4 
    }, 
    '2': { 
     '1': 1, 
     '4': 3 
    }, 
    '3': { 
     '2': 2 
     '3': 4, 
     '4': 6 
    }, 
    '4': { 
     '1': 5, 
     '3': 2 
    } 
}; 

// Get value of cell (col: 3, row: 4) 
console.log(matrix['4']['3']); 
// Set value of cell (col: 2, row: 3) 
matrix['3']['2'] = 100; 

// Check if cell (col: 1, row: 1) has value 
var hasValue = matrix['1'] !== undefined && matrix['1']['1'] !== undefined; 
+0

オプション3についてもっと具体的になるでしょうか?ありがとう。 – arslan

+0

@alimもっと良い例を追加 –

+0

私は対称であるので、行列の半分しか格納しない1次元配列を使うことを選択しました。私はこれらのすべてのオプションを考慮し、非常に良い方法ではないようだので、メモリを節約する方が良いはずです。どうも :) – arslan

関連する問題