問題タブ [hdf5]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sparse-matrix - HDF5 でのスパース配列のサポート
何らかの方法で 512^3 配列をディスクに格納する必要があり、現在 HDF5 を使用しています。配列がまばらであるため、多くのディスク領域が無駄になります。
HDF5 はスパース配列をサポートしていますか?
python - Google Protocol Buffers、HDF5、NumPy の比較 (データ転送)
決定を下すには助けが必要です。アプリケーションでデータを転送する必要があり、これら 3 つのテクノロジのいずれかを選択する必要があります。すべてのテクノロジー (チュートリアル、ドキュメント) について少し読みましたが、まだ決定できません...
それらはどのように比較されますか?
メタデータのサポート (追加情報/ファイルなしでファイルを受信して読み取る機能)、高速な読み取り/書き込み操作、動的データを保存する機能 (Python オブジェクトなど) が必要です。
私がすでに知っていること:
- NumPyは非常に高速ですが、動的データ (Python オブジェクトなど) を格納できません。(メタデータはどうですか?)
- HDF5は非常に高速で、カスタム属性をサポートし、使いやすいですが、Python オブジェクトを保存できません。また、HDF5はNumPyデータをネイティブにシリアル化するため、私見、NumPyはHDF5よりも利点がありません
- Google Protocol Buffersも自己記述型をサポートしており、かなり高速です (ただし、現時点では Python のサポートは貧弱で、遅くてバグがあります)。動的データを保存できます。欠点 - 自己記述型は Python からは機能せず、1 MB 以上のメッセージはシリアライズ/デシリアライズがあまり高速ではありません (「遅い」と読みます)。
PS: 転送する必要があるデータは、NumPy/SciPy の「作業の結果」(配列、複雑な構造体の配列など) です。
UPD: クロス言語アクセスが必要 (C/C++/Python)
python - HDF5 : NumPy データの保存
NumPy を使用したとき、そのデータをネイティブ形式 *.npy で保存しました。それは非常に速く、このようないくつかの利点を私に与えました
- C コードから *.npy を単純なバイナリ データとして読み取ることができました (つまり、*.npy は C 構造とバイナリ互換です)。
今、私は HDF5 (現時点では PyTables) を扱っています。チュートリアルで読んだように、彼らは NumPy シリアライザーを使用して NumPy データを保存しているので、単純な *.npy ファイルから C からこれらのデータを読み取ることができますか?
HDF5 の numpy は C 構造体ともバイナリ互換ですか?
更新日:
hdf5から読み取るmatlabクライアントがありますが、* .npyからバイナリデータを読み取る方が数倍高速であるため、C++からhdf5を読み取りたくないので、C++からhdf5を読み取る必要があります(バイナリ互換性)だから私はすでにデータを転送するための2つの方法を使用しています-* .npy(C++からバイトとして読み取り、Pythonからネイティブに)およびhdf5(Matlabからのアクセス)そして、可能であれば、唯一の方法であるhdf5を使用したいのですが、これを行うために私は持っていますC++構造でhdf5をバイナリ互換にする方法を見つけるには、助けてください.hdf5で圧縮をオフにする方法や、C++構造でhdf5をバイナリ互換にする方法があれば、それについてどこで読めるか教えてください...
python - HDF5 内部データ編成と NumPy の使用
hdf5のドキュメントにあるように、HDF5はNumPyを使用してデータを保存します
「これは、HDF5 ライブラリ、Python 言語、および NumPy パッケージの上に構築されています。コードのパフォーマンスが重要な部分の C 拡張機能と組み合わされたオブジェクト指向インターフェイスを備えているため、高速でありながら非常に簡単になります。非常に大量のデータをインタラクティブに保存および取得するためのツールです。"
...
「PyTables は、これらの NumPy コンテナーをメモリ内バッファーとして使用して、I/O 帯域幅をプラットフォームの限界に押し上げます。」
では、そのメカニズムは?PyTables は NumPy をどのように使用していますか?最終的に、他の言語からアクセス可能なプレーンな hdf5 を生成します...
python - 2つのhdf5ファイルをpytablesとマージする
ptrepackは、重複するパスを上書きまたは無視するオプションしかないことを除いて、ほとんど私が望むものです。以下の例は、私が構造で何をしたいのかを示しています
入力ファイル 1
入力ファイル 2
希望の出力
これを行うための効率的な方法は何ですか?
arrays - Mathematica HDF5 と複合配列
HDF5複合配列を読み取るためのMathematicaでの回避策はありますか? テーブルに単純な 2D 複合型 (int/float) がありますが、現在は無視されています。
HDF5 タイプの例は次のとおりです。
python - PyTablesまたはPyHDFを介して大きなテキストファイルをhdf5に「読み込む」?
SciPy を使用していくつかの統計を試みていますが、入力データセットは非常に大きく (~1.9GB)、dbf 形式です。ファイルが十分に大きいため、genfromtxt で配列を作成しようとすると、Numpy がエラー メッセージを返します。(私は3GBのRAMを持っていますが、win32を実行しています)。
すなわち:
他の投稿から、PyTables によって提供されるチャンク配列が役立つ可能性があることがわかりますが、私の問題は、そもそもこのデータを読み取ることです。言い換えれば、PyTables または PyHDF は必要な HDF5 出力を簡単に作成しますが、最初にデータを配列に入れるにはどうすればよいでしょうか?
例えば:
その後、テーブルまたは配列を作成できますが、元の dbf データを参照するにはどうすればよいでしょうか? 説明で?
ご意見ありがとうございます。
r - MatlabとRの間で大規模なデータセットを共有する
MatlabとRの間でデータを共有するための比較的効率的な方法が必要です。
SaveRとMATLABR -linkを確認しましたが、SaveRは最初にMatlabのバイナリデータをテキスト文字列として フォーマットしてからASCIIファイルに出力します。これは大きなデータセットには効率的ではなく、MATLAB R-linkはWindowsでのみ機能します( COMベースのインターフェイス)。
アップデート:
Dirkは、 SaveRやMatlabR -linkよりもこの問題のより良い解決策のリストを投稿しました。また、最近RAMディスクについて学び(いくつかの実装例についてはこことここを参照)、MatlabとR(または同様の計算環境)間で大規模なデータセットを共有するタスクをさらに容易にする可能性があると考えました。これは私を次の質問に導きます:
データがMatlabまたはRのネイティブデータコンテナー内のマシンのメモリに収まると仮定します。
これまでにリストされたソリューションのいずれかがRAMディスクにより適していますか?
二次ストレージソリューションの代わりにRAMディスクを扱うときに考慮すべき追加の考慮事項はありますか?
ありがとう!
performance - Matlabでデータをロードする最速の方法は何ですか
膨大な量のデータ(> 800Mb)があり、Matlabにロードするのに時間がかかります。これは主に、データが20kB未満の小さなファイルに分割されているためです。それらはすべて、私が読み取ってMatlabにロードできる独自の形式であり、非常に時間がかかるだけです。
私は、データを読み込んで、ある種のバイナリファイルに書き出すことを考えています。これにより、後続の読み取りが速くなります(多くの場合があるため、高速化が必要です)。
だから、私の質問は、それらをディスクに書き込んで、できるだけ早く読み直すのに最適な形式は何でしょうか?
fwriteを使用して書き込むか、matlabから変数を保存するかを選択できると思います。私はfwriteオプションを好むと思うので、必要に応じて、別のパッケージ/言語からそれらを読み取ることができます...