問題タブ [hdf]
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.
python - Pythonで2つのオブジェクト間で情報を保存して使用する最良の方法は何ですか?
オブジェクトの名前/IDのセットがあります(Pythonオブジェクトではなく、人生のオブジェクトに関して)。
簡単にするために、これらのオブジェクトには次の名前が付いています。
そのようなオブジェクトの数は約 2000 (将来的には約 6000 になる可能性があります)。
タスクを達成するための最良の方法を決定しようとしています:オブジェクトの各ペア間で情報 (param1、param2、...、paramN) を保存する最良の方法は何ですか。次のデータ構造のようになります。
いくつかの側面を考慮することが重要です。
- cell[A,B]=cell[B,A] したがって、すべてのテーブルの 1/2 だけを保存する必要があります
- このテーブルを tmp dir に保存し、Python アプリケーションの開始時にロードする必要があります
- Python アプリケーションでこのテーブルから値をすばやく抽出する必要があります
私の解決策: pandas.DataFrame モジュールを使用しました。そして、各パラメーターについて: param1、param2、...個々の三角テーブルを作成します: param1table、param2table、...入力後、CSV ファイルに保存します: param1table.csv、param2table.csv、....csv
私のプログラムでは、ペアで param1 する必要がある場合: A、B、param1table.csv (pandas.read_csv) をロードし、値 [A,B] が存在するかどうかを確認し、そうでない場合は [B,A] を返す必要があります。
効率の悪い方法だと思います。
pandas - hdfへのデータフレームの送信を最適化していますか?
h5 ファイルと hdf ファイルの違いは何ですか? どちらか一方を使用する必要がありますか?次の 2 つのコードで timeit を実行してみましたが、240 MB のファイルでループごとに約 3 分 29 秒かかりました。最終的に 2 番目のコードでエラーが発生しましたが、ファイル サイズがディスク上で 300 MB を超えていました。
また、次のようなエラー メッセージが表示されました。
これは、空白値のためにオブジェクトである文字列列が原因です。.astype(str) を実行すると、すべての空白が nan (出力ファイルにも表示される文字列) に置き換えられます。エラー メッセージが気になり、空欄を埋めて後で再度 np.nan に置き換えますか、それとも単に無視しますか?
null を持つ列がいくつかあることを示す df.info() を次に示します。これらの行を削除することはできませんが、必要に応じて一時的に何かを入力することはできます。
python - HDF5 C++ API で GZIP 圧縮が使用されている場合、自動チャンクはデフォルトで有効になっていますか?
C++ HDF API を使用して HDF5 ファイルを作成し、H5py Python ライブラリに対していくつかの比較を実行しています。
H5py Python ライブラリでは、GZIP や LZF などの圧縮アルゴリズムが使用される場合、デフォルトでオートチャンクが適用されます。
同じ条件が HDF5 C++ API に適用されますか? もしそうなら、GZIP などの圧縮アルゴリズムがデータ セットに適用されたときに、チャンクが自動的に作成されたことをどのように証明できますか。
python - Pythonで2つまたは3つの3D配列をマージするには?
hdf形式の時系列データがあります。以下のコードを使用して、hdf ファイルからデータを読み取ります。ここで、同じ jdn (ユリウス日番号) を持つデータについて、緯度と経度に基づいてデータを結合しようとしました。同じユリウス日番号を持つデータは、連続空間データを表します
私のデータはこのリンクに添付されています: https://drive.google.com/folderview?id=0B2rkXkOkG7ExX2lTTWEySU1fOWc&usp=sharing
c++ - HDF5 ライブラリを使用した HDF5 ファイル内のグループの名前変更と削除
HDFview アプリケーションを使用して HDF5 データ ファイルを変更しています。基本的に、すべてのグループをチェックし、特定の属性値に一致するグループを削除し、いくつかのグループの名前を変更し、属性値を調整して、アプリケーションに対してファイルの一貫性を保ちます。
問題は、同じことをしたいということですが、C++ HDF5 ライブラリを使用しています。グループを反復処理する小さなアプリケーションを作成しましたが、どうすればそれらを削除できますか? 仕様上、そのような操作は許可されていないようです。グループのリンクを解除しようとしましたが、通話に失敗しました。名前の変更部分については、UNIX プロンプトと同じようにグループを移動しようとしましたが、うまくいきませんでした。
他に注意すべき点は、仕様で削除が許可されていない場合、HDFview はその操作をどのようにサポートしていますか?
これに関するヒントは大歓迎です。よろしく
pandas - パンダ:同じ HDF 内の大きなデータフレーム?
関連するいくつかの異なるデータフレームがあります(必要に応じてそれらを結合するためのIDがあります)。ただし、常に同時に必要とは限りません。
それらは非常に大きいので、それらを別々の HDF ストアに格納することは理にかなっていますか? それとも、同じファイル内の他のフレームで作業しているときに、「未使用」のフレームを持ち歩くコストは無視できますか?
python - 大きな疎行列をロードする最速の方法
私は、Python で大規模なデータセットにアクセスする最速の方法を見つけようとしていじっています。
私の現実のケースでは、主にドット積を取り、レベルを合計しているため、pandas MultiIndex DataFrame にロードしている約 10,000 x 10,000 の csv ファイルがあります。
この csv を pandas にロードするのに約 1 分かかるため、この速度を改善する方法を探していました。
調査の結果、このスレッドに出くわしました: Python でデータを保存/ロードすると、matlab よりも多くのスペース/時間がかかるのはなぜですか?
このスレッドから得たのは、.mat ファイルは hdf5 として保存されるため、読み込みが速くなるということです。そのため、ピクルのパフォーマンスと、h5py、pandas、および scypio (.mat ファイルからデータをロードする) を使用した hdf のパフォーマンスを評価したいと考えました。
私の実際のケースの結果は次のとおりです。
ご覧のとおり、.mat ファイルの読み込みは、Python で生成された pickle と hdfs の 3 倍以上高速です。そのため、Python で生成された hdfs の読み込みにはこの利点がないため、.mat ファイルの読み込み時間の短縮は hdf によるものではないようです。
これに基づいて、ここに質問を投稿して、大規模なデータセットを Python にロードする最も簡単な方法を尋ねたいと思いました。このために、いくつかのランダム データを使用しておもちゃの例を作成しました。
MATLAB で csv を mat に変換した後、読み込み時間を評価するために次のテストを行いました。
結果は次のとおりです。
興味深いことに、.mat ファイルはここで読み込みの利点を失ったようです。調査の結果、現実世界のデータは非常にまばらであることが判明しました。どのくらい疎かを把握するために、ゼロ以外の値をすべて 1 に置き換え、すべてを合計し、行列のサイズで割りました。これにより、約 0.28 の密度が得られました。この数値を使用して、おもちゃの例のランダム マトリックスをスパース マトリックスに置き換えました。
実際、これがうまくいったようです:
そのため、sparse として保存すると、pickle、pandas、および h5py の読み込み時間が短縮されるかどうかを調査したいと考えました。このために、スパース バージョンを直接 pickle に保存し、DataFrame のスパース バージョンを保存しました。
h5py で保存しようとすると、エラーが発生しました。
少し調査した結果、チャンク ストレージを使用する必要があるようですが、これをさらに調査することで当初の目標から遠ざかっていると感じました。
結果は次のとおりです。
pickle は高速化されているように見えましたが (それでも .mat ほど高速ではありませんでした)、pandas は大きな打撃を受け、読み込みに 8 分近くかかりました。
最後に、Python から直接マットに保存しようとしました。
これをロードすると、次の結果が得られました。
スパース バージョンを保存します。
降伏
高速ですが、MATLAB のマット ファイルよりも約 10 秒遅いです。
というわけで、ここからどこへ行こうか迷っています。MATLAB マット ファイルのパフォーマンスを達成する (または上回る) 方法はありますか? 可能であれば、同じ環境 (つまり、python、spyder) 内にとどまりたいです。