問題タブ [h5py]

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.

0 投票する
2 に答える
395 参照

python - Python に大きな非構造化リストを保存する

大規模な非構造化リスト (たとえばa=[0,numpy.asarray([1,2,3])]) を格納するのに適した Python ライブラリを知っていますか?

これまで見てきたことは、h5py はこの種のデータをサポートしておらず、pickle は遅いようです。他の選択肢はありますか?

私の目的のために、同じ型 (int 型の numpy 配列) で異なる形状のデータを扱っていると仮定できます。

0 投票する
6 に答える
31620 参照

python - hdf5 ファイルの結合

それぞれが単一のデータセットを持つ多数の hdf5 ファイルがあります。データセットが大きすぎて RAM に保持できません。これらのファイルを、すべてのデータセットを個別に含む 1 つのファイルに結合したいと考えています (つまり、データセットを 1 つのデータセットに連結しないでください)。

これを行う 1 つの方法は、hdf5 ファイルを作成してから、データセットを 1 つずつコピーすることです。これはバッファリングされたコピーである必要があるため、遅く複雑になります。

これを行うより簡単な方法はありますか?基本的にコンテナファイルを作成しているだけなので、あるはずです。

私はpython/h5pyを使用しています。

0 投票する
2 に答える
456 参照

python - h5py: numpy データをネイティブの Python 型に変換します

h5py経由でHDF5ファイルにデータを保存しています。それらは混合型のデータであり、一部は適切な numpy 配列であり、多くはスカラーまたは文字列です。スカラーと文字列は、h5py によって自動的に numpy 配列に「エンコード」されます (これは非常に素晴らしいことです) が、今は逆にしたいと思います: これらのデータを読み取るときは、スカラーを 0d 形状として見るのではなく、ネイティブの Python 型に変換します。 、文字列<HDF5 dataset "plots": shape (), type "|S207">など。

配列 dtype を手動でチェックすることなく、それを達成する簡単な方法はありますか?

変換ごとに追加のオブジェクトが作成されることは問題ありません。

0 投票する
1 に答える
1728 参照

python - h5py を使用したデータセットのループに関するパフォーマンスの問題

hdf5 ファイルに含まれるデータセットに単純な関数を適用したいと考えています。これに似たコードを使用しています

最初は非常に高速で、ある程度再現可能なデータセットが一定数になると、劇的に遅くなります。最後の行をコメントすると、ほぼ瞬時に終了します。データが保存されている (ここではリストに追加されている) かどうかは問題ではありません: 同様の効果として data[:100] のようなもの。パフォーマンスが低下する前に処理できるデータセットの数は、各反復でアクセスされる部分のサイズに依存します。小さなチャンクを繰り返し処理しても問題は解決しません。

メモリスペースがいっぱいになり、いっぱいになるとプロセスが遅くなると思いますが、その理由はわかりません。

このパフォーマンスの問題を回避するにはどうすればよいですか?

ubuntu 10.04でpython 2.6.5を実行しています。

編集: ループの 2 行目がコメント解除されている場合、次のコードは遅くなりません。それがないと遅くなります

編集:多次元データセットの最初の次元へのアクセスは問題なく実行されるように見えることがわかりました。この問題は、より高い次元が含まれる場合に発生します。

0 投票する
1 に答える
598 参照

python - Pythonでmatlabスパース行列(matlab v 7.3)をロードする

Python プログラムで使用する必要がある大規模な matlab 疎行列 (matlab 7.3) を格納するデータ ファイルがあります。h5py を使用してこの疎行列を読み込み、疎行列に関連付けられた 3 つのデータ構造があることを確認しました。

疎行列の名前が M で、3 つのデータ構造が M['data']、M['ir']、M['jc'] であるとします。最初は、M['ir'] と M['jc'] はゼロ以外の項目の行インデックスと列インデックスを格納すると思っていましたが、M['jc'] の行番号より大きい値がいくつか存在することがわかりました。疎行列。3つのデータ構造にどのような種類の情報が格納されているか説明できますか?

0 投票する
6 に答える
23539 参照

python - h5py経由でv7.3マットファイルを読む方法は?

matlab によって作成され、v7.3 形式のマット ファイルに格納されている構造体配列があります。

ここで、h5py を使用して Python 経由でこのファイルを読みたいと思います。

構造体データを 1 つずつ取得する方法がわかりませんstruArray

0 投票する
1 に答える
1244 参照

python - numpy, h5py:h5pyで保存されたより大きな列から、その列の1つでソートされた配列を作成するにはどうすればよいですか?

あなたが私の問題をよりよく理解できるように、背景情報を提供したいと思います。

実験の結果から、h5py を使用して大きな hdf5 テーブルを多数の列で埋めました。すべての測定が完了したら、いくつかの結果をプロットして適合させる必要があります。これはすでに機能していますが、フィッティング関数をプロットしたい時点に到達すると、データが「x」軸データの列でソートされていないため、単一の行ではなく、醜いバックアンド- 4 行目 (お見せしたいのですが、まだ十分な評判がありません)。

したがって、最初に考えたのは、プロットしてフィッティングする前に配列をソートすることでした。ここで見つけたいくつかのガイドに従ってみましたが、結合された配列の形状が間違っていたため、より良い方法があるかもしれないと思いました.

だから私の質問は、h5pyを使用してhdf5ファイルに保存されたより大きな配列からその列の1つでソートされた配列を取得する最良の方法は何ですか?

これは私が現在やっている方法です:

hdf5 ファイルから既に列を抽出したとしましょう (これは改善される可能性がありますが!)、今はそれらを作成しています。

0 投票する
1 に答える
651 参照

python - 1D ソースから HDF5 の n 次元配列を埋めるにはどうすればよいですか?

複数の次元 (x、y、チャネル、z、時間ステップ) の配列があります。ただし、生データは TIFF イメージに (x, y, チャネル) の単一のスタックとして、z * 時間ステップ フレームで格納されます。

最後に、Pillow の Image.getdata() 関数は、再形成が必要な 1D 配列のようなオブジェクトを返します。

データセットが大きすぎてメモリに収まらない場合、これを HDF5 に読み込む最善の方法は何ですか? HDF5に書き込まれた後に配列を再形成すること、または配列に自動的に入力される方法で1Dデータを書き込むことは可能ですか(つまり、xが最速、yが2番目に速いなどで書き込みます)更新:次のようなものnumpy.ndarray.flatが理想的です。

これまでに試したことは次のとおりです(imgはPIL.Image、dsetはh5pyデータセットです):

1) 個々のフレームの読み取り。この方法は、1000 フレームで 300MB に約 20 分かかるため、遅すぎます。ほとんどの時間は dset[] = a 呼び出しに費やされます。

2)不完全:チャンクで読み取ります。これははるかに高速ですが (同じデータセットで 2 分)、4D 画像 (sx、sy、チャネル、時間ステップ) でしか機能せず、z スライスに追加の次元が必要です。

0 投票する
2 に答える
5327 参照

python - Pythonでの大行列乗算 - 最良のオプションは何ですか?

cの2つのブールスパース正方行列があります。12BM のデータから生成された 80,000 x 80,000 (GB のデータを使用すると、桁違いに大きな行列になる可能性があります)。

それらを乗算したい(これにより三角行列が生成されます-ただし、内積を制限して三角行列を生成しないため、これは得られません)。

それらを乗算する最良の方法 (メモリと速度の観点から) を考えています。RAM が 60 GB を超える m2.4xlarge AWS インスタンスで計算を実行します。速度の理由から、計算を RAM に保持することをお勧めします。

SciPy にはスパース行列があり、h5py にもスパース行列があることに感謝していますが、どちらの経験もありません。

最善の選択肢は何ですか?

前もって感謝します

更新: ブール行列のスパース性は <0.6% です