DenseMatrixクラスには、Array [V]型のパラメータデータがあります。 Vectorのように、動的に成長する可能性がある他の可変コレクションを使用しないのはなぜですか?Breezeで行列を表すために配列が使用されるのはなぜですか?
答えて
コメント(Raphael RothとJasper-Mのコメント)はどちらも良い点を示しており、どちらもその理由の一部です。 Breezeは、JNI経由でネイティブBLASへのインターフェイスを処理するためにnetlib-javaを使用し、配列を使用します。 (これはJavaのバッファで実装されていた可能性がありますが、そうではありませんでした)。DenseMatricesの動的サイズ変更はあまり意味がなく、DMとDVの実装は意図的に似ています。
配列には、JavaやScalaの他の組み込みコレクションのようなものよりも優れたパフォーマンス特性があり、Breezeは高速であることを気にしているので、これが最良の選択です。 scalaおよびjava boxプリミティブ要素の両方にあるすべてのジェネリックコレクション。パフォーマンスに影響されない環境ではまったく受け入れられません。 (私はScalaの特化したものを使って独自のArrayBufferをロールバックすることもできましたが、そうしませんでした)また、java Vectorはすべてのアクセスを同期させるため、実際にロックを必要としない限り特に受け入れられません。
データセットの次元が不明な場合は、VectorBuilder(設定可能な長さパラメータがあり、-1に設定して境界チェックをオフにすることができます)を使用できます。
詳細な回答ありがとうございます。私はあなたが説明していたものをチェックしましたが、今はArrayを選択した理由を理解しています(netlib-javaにはあまりよく慣れていませんが、ライブラリは私が思ったよりもすばらしいと思われます)。 –
- 1. なぜ配列に渡された配列がnullですか?
- 2. ハンドルバーは、インデックスで配列にアクセスするためにドットブラケット表記を使用するのはなぜですか?
- 3. C++チュートリアルで文字列の配列が文字列に使用されているのはなぜですか?
- 4. Railsのform_tagに配列が表示されるのはなぜですか?
- 5. イメージがバイト配列で表されるのはなぜですか?
- 6. リモートのtrueを使用すると、私のレールオブジェクトの配列が表示されるのはなぜですか?
- 7. なぜtableviewに辞書の配列が表示されないのですか?
- 8. slice()を使用した後に配列が変更されるのはなぜですか?
- 9. 配列が "m"で埋められているのはなぜですか?
- 10. 行列内の空のセルを表現するために使用される記号は何ですか?
- 11. AngularJSの配列からリンクを使用すると、オーディオが再生されないのはなぜですか?
- 12. 暗号化されたバイト配列とchar []表現の長さが異なるのはなぜですか?
- 13. なぜJavaで並列配列を使用するのですか?
- 14. 行行列をBreeze Dense行列に変換する
- 15. バイナリ配列のBreezeデータ型
- 16. Rubyで各doループを使用して配列を埋めることができないのはなぜですか?私は配列を埋めるために各doループを使用する場合はそのまま、それはアレイを残す
- 17. 追加されたJFrameで配列オブジェクトが変更されたときに配列オブジェクトが変更されないのはなぜですか?
- 18. 元の行列を作るために使用された因子のレベルによって小さな行列に行列をサブセット化するためのループ
- 19. Promise.all(配列)がすぐに解決されないのはなぜですか?
- 20. ES2015で文字列iterableが使用されるのはなぜですか?
- 21. appendAttributedStringが新しい行に追加された文字列を表示するのはなぜですか?
- 22. AndroidのfrustumMで生成される行列がRedbookの行列と異なるのはなぜですか?
- 23. JQueryが文字列配列ではなくMVCコントローラにnull配列を渡すのはなぜですか?
- 24. JSON配列がオブジェクトに変換されるのはなぜですか?
- 25. 入力値が配列に格納されないのはなぜですか?
- 26. オブジェクトが配列に追加されないのはなぜですか?
- 27. d3でカラー配列が無視されるのはなぜですか?
- 28. CLGeocoderを「目印」の配列で使用するのはなぜですか?
- 29. 配列がアルファベット順でソートされないのはなぜですか?
- 30. フォーマット後にNUMBER列に####が表示されるのはなぜですか?Oracle?
ちょうど推測:ネイティブライブラリ(JNI)との通信はArraysで行う必要があるため、AFAIKではネイティブコードに任意のコレクションを渡すことはできません。 –
おそらく配列が最も速いからです。そして、なぜマトリックスは動的に成長する必要がありますか?行列は常に固定次元ではありませんか? –
@Raphael Roth返信ありがとうございます.JNIと通信するDenseMatrixのいくつかの方法を指摘できますか? –