問題タブ [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.
python - numpyまたはデータセットのサイズを変更する効率的な方法は?
配列とのresize()
関数の影響を理解したい。私のアプリケーションでは、テキストファイルを1行ずつ読み取り、データを解析した後、ファイルに書き込みます。これを実装するための良いアプローチは何でしょうか。新しい各行を配列に追加し、numpy配列のサイズを変更し続ける(最終的には完全なnumpy配列をh5pyデータセットに書き込む)必要がありますか、それとも新しい各行データを直接追加してメモリ内のサイズを変更する必要があります。各行の後でサイズ変更を続けると、関数はパフォーマンスにどのように影響しますか?または、100行または1000行ごとにサイズを変更する必要がありますか?numpy
h5py dataset
hdf5
numpy
h5py dataset
h5py dataset
resize()
各データセットには約200,000行が含まれる可能性があります。
どんな助けでも大歓迎です。
python - h5py での高レベル インターフェイスと低レベル インターフェイスの混合
h5py を使用して高レベル API と低レベル API を混在させる方法があるかどうか疑問に思っています。
例: ハイレベル インターフェイスを介してアクセスしている hdf5 ファイルがあります。
これで、ds
オブジェクトはh5py.Datasetになりました。これは、私が行う必要があるほとんどの作業に最適です。ただし、ディスクに保存されているこのデータセットのサイズを把握したいと思います。低レベルのインターフェースはh5py.h5d.DatasetID.get_storage_space()を提供します。これはまさに私が望むことを行いますが、高レベルのオブジェクトからこれを呼び出す方法がわかりません。
高レベル API から基になる低レベル オブジェクトを見つける方法はありますか?
python - 巨大な numpy (HDF5) 配列に関する統計
h5pyを使用して HDF5 ファイルとしてディスクに保存するかなり大きな 4D 配列 [20x20x40x15000] があります。今問題は、配列全体の平均を計算したいということです。つまり、次を使用します。
を取得しMemoryError
ます。numpy が HDF5 ファイルをメモリにロードして平均を実行しようとしているようです。
誰かがこの問題に対するエレガントで効率的な解決策を持っていますか?
python - Python ガベージ コレクターに問題がありますか?
数百万行を含む大きなファイルを読み取り、各行を解析し ( numpy array
)、double の配列に変換し ( python array
)、後で に書き込む単純なプログラムがありますhdf5 file
。このループを何日も繰り返します。各ファイルを読み取った後、すべてのオブジェクトを削除し、ガベージ コレクターを呼び出します。プログラムを実行すると、初日はエラーなしで解析されますが、2 日目にはMemoryError
. プログラムのメモリ使用量を監視しました。解析の初日、メモリ使用量は約1.5 GBでした。初日の解析が終了すると、メモリ使用量は50 MBに減少します。2日目が始まると、取得したファイルから行を読み取ろうとしますMemoryError
。以下は、プログラムの出力です。
Windows システム タスク マネージャーが、このプロセスのメモリ使用量を50 MBと表示していることは確かです。Python のガベージ コレクタまたはメモリ マネージャが空きメモリを正しく計算していないようです。空きメモリがたくさんあるはずですが、十分ではないと考えています。
何か案が?
編集
ここに私のコードを追加する
コードの一部を配置します。私は python を初めて使用します。私の python コーディング スタイルをご容赦ください。
モジュール 1
モジュール 2 - taqdb - 解析されたデータを配列に格納する
モジュール 3 - パーサー
ありがとう。
python - 複数の hdf5 ファイルを読み込んで新しい辞書に追加する
hdf5
開いて適切な値を新しい辞書に読み込み、最終的にテキスト ファイルに書き込みたいファイルのリストがあります。私は必ずしも値を知っているわけではないので、ユーザーはそれらをコードへの入力として配列で定義します。必要なファイルの数は、ユーザーが見たいデータの日数によって決まります。
ファイルが 1 つしかない場合は問題なく動作しますが、ファイルが 2 つ以上ある場合はキーが閉じているように見えますか? これが正確に起こっていることかどうかはわかりませんが、何が起こっているのかを尋ねると、テキストファイルに書き込まれないnew_data_dic
値が返されます。{'Bfs_geo_a': <Closed HDF5 dataset>,...
次の ( ) を開く前に hdf5 ファイルを閉じようとしましたrbsp_ephm.close()
が、同じエラーが発生します。
助けてくれてありがとう!
python - ポインタを使用したh5py対称配列
私は、最終的に対称なカスタムh5py配列を作成する方法を探していました。理想的には、作成時に単一の値を持ち、それを指すような配列になりa[i][j]
ますa[j][i]
。これは、長距離ベクトルを正方形の行列に書き込むためです。ベクトルと正方行列は大きすぎてメモリに保持できないため、比較的高速なソリューションで正方行列を作成したいと思います。
python - Pythonの再帰関数と可変でない辞書を返す
関数 VisitAllObjects が異なるファイルを受け入れて辞書を返すようにしようとしています。しかし、私が現在持っているものは同じ名前を指していますか? したがって、gdata が実行されると、fdata は gdata に変更されます。fdata と gdata が gh5 ファイルからの尊敬されるデータと等しくなるようにするにはどうすればよいですか?
あなたの助けと、内部で visit_all_objects を呼び出すときに file_info を追加することで、これを機能させることができました。これに問題がある場合はお知らせください。さらに確認する必要がありますが、fdata と gdata を使用すると異なるデータが返され、fdata is gdata
False になります。ありがとう。
私はそれを次のように動作させました:
python - h5py高レベルインターフェースを使用しながらキャッシュ設定を設定するにはどうすればよいですか?
HDF5ファイルのキャッシュサイズを増やしようとしていますが、機能していないようです。これは私が持っているものです:
出力は次のとおりです。
読書が機能する理由はありますが、設定は機能しませんか?
ファイルを閉じて再度開くことも役に立たないようです。
python - h5py でデータ範囲にアクセスする
62 の異なる属性を含む h5 ファイルがあります。それぞれのデータ範囲にアクセスしたいと思います。
ここで私がやっていることをもっと説明するために
前のコードは、「U」、「T」、「H」などの属性のリストを提供します。
「U」の最小値と最大値を知りたいとしましょう。どうやってやるの ?
これは、「h5dump -H」を実行した結果です。
python - h5py インメモリ ファイルとマルチプロセッシング エラー
これは、HDF5とマルチプロセッシングの専門家向けです...まず第一に、python h5py とマルチプロセッシング モジュールが必ずしも互いに好きではないことを知っていますが、理解できないエラーが発生しています。私が取り組んでいるスクリプトは、一時的なインメモリhdf5 ファイルを作成し、(pickle) 入力ファイルからのデータをインメモリ ファイルに格納し、マルチプロセッシング プールが一時ファイルからのデータに対して (読み取り専用) 操作を実行します。 HDF5 ファイル。
エラーの原因となっているコードを特定できたので、簡略化したコード スニペットを以下に示します。ジェネレータ関数内でインメモリhdf5 ファイルを作成し、そのジェネレータを使用してマルチプロセッシング プールの引数を生成すると、一連の HDF5 エラーが発生します。エラーを再現するために作成できるのと同じくらい簡単なコードを次に示します。
itertools.imap (「useMP=False」を設定) を使用すると、期待どおりに次の出力が得られます。
しかし、Pool.imap を使用すると、プールが 1 つのワーカー スレッドのみで作成された場合でも、次の出力が得られます。
奇妙なことに、このエラーはプログラムをクラッシュさせません。このエラーを引き起こした私が書いているスクリプトは、実際には期待どおりに機能しますが、作成するメモリ内ファイルごとに上記のエラーが発生します。itertools.imap を使用してもエラーは発生せず、既存の HDF5 ファイルを読み取ってもエラーは発生しません。マルチプロセッシングとインメモリ HDF5 ファイルの組み合わせのみです。
h5py バージョン 2.1.1
hdf5 バージョン 1.8.9
Python バージョン 2.7.3