問題タブ [pytables]
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 - HDF5 内部データ編成と NumPy の使用
hdf5のドキュメントにあるように、HDF5はNumPyを使用してデータを保存します
「これは、HDF5 ライブラリ、Python 言語、および NumPy パッケージの上に構築されています。コードのパフォーマンスが重要な部分の C 拡張機能と組み合わされたオブジェクト指向インターフェイスを備えているため、高速でありながら非常に簡単になります。非常に大量のデータをインタラクティブに保存および取得するためのツールです。"
...
「PyTables は、これらの NumPy コンテナーをメモリ内バッファーとして使用して、I/O 帯域幅をプラットフォームの限界に押し上げます。」
では、そのメカニズムは?PyTables は NumPy をどのように使用していますか?最終的に、他の言語からアクセス可能なプレーンな hdf5 を生成します...
pytables - PyTable 列を特定の順序で格納する方法はありますか?
createTable() の呼び出しのスキーマ定義にディクショナリまたはクラスの両方を使用する場合、PyTable の列はアルファベット順に並べられているようです。特定の順序を確立し、numpy.genfromtxt() を使用してテキストからデータを読み取って保存する必要があります。私のテキスト ファイルには、PyTable の場合のように変数名がアルファベット順に含まれていません。
たとえば、テキスト ファイルの名前が mydata.txt で、次のように構成されているとします。
time(row1) bVar(row1) dVar(row1) aVar(row1) cVar(row1)
time(row2) bVar(row2) dVar(row2) aVar(row2) cVar(row2) ...
time(rowN) bVar(rowN) dVar(rowN) aVar(rowN) cVar(rowN)
したがって、必要なのは、これらの列で順序付けされたテーブルを作成し、numpy.genfromtxt コマンドを使用してテーブルにデータを入力することです。
これは単純なコードであり、非常に高速であるため、望ましいものです。ただし、PyTable の列は常にアルファベット順に並べられ、追加されたデータは目的の順序に従って並べられます。ここで基本的なものが欠けていますか?テーブルの列の順序をアルファベット順ではなくクラス定義の順序にする方法はありますか?
python - 2つのhdf5ファイルをpytablesとマージする
ptrepackは、重複するパスを上書きまたは無視するオプションしかないことを除いて、ほとんど私が望むものです。以下の例は、私が構造で何をしたいのかを示しています
入力ファイル 1
入力ファイル 2
希望の出力
これを行うための効率的な方法は何ですか?
python - PyTablesまたはPyHDFを介して大きなテキストファイルをhdf5に「読み込む」?
SciPy を使用していくつかの統計を試みていますが、入力データセットは非常に大きく (~1.9GB)、dbf 形式です。ファイルが十分に大きいため、genfromtxt で配列を作成しようとすると、Numpy がエラー メッセージを返します。(私は3GBのRAMを持っていますが、win32を実行しています)。
すなわち:
他の投稿から、PyTables によって提供されるチャンク配列が役立つ可能性があることがわかりますが、私の問題は、そもそもこのデータを読み取ることです。言い換えれば、PyTables または PyHDF は必要な HDF5 出力を簡単に作成しますが、最初にデータを配列に入れるにはどうすればよいでしょうか?
例えば:
その後、テーブルまたは配列を作成できますが、元の dbf データを参照するにはどうすればよいでしょうか? 説明で?
ご意見ありがとうございます。
python - PyTables for Python 2.7 を再インストールできません
2.7 に加えて Python 2.7 をインストールしています。2.7 用に PyTables を再度インストールすると、このエラーが発生します -
- numpy 1.5.1 パッケージがインストールされていることがわかりました。.. エラー:: ローカルの HDF5 インストールが見つかりませんでした。
HDF5_DIR
環境変数を設定するか、--hdf5
コマンドライン オプションを使用して、ローカルの HDF5 ヘッダーとライブラリを見つけることができる場所を明示的に指定する必要がある場合があります。
HDFのインストールについては明確ではありません。再度ダウンロードして、/usr/local/hdf5 ディレクトリにコピーしました。PyTableのインストールで提案されているように、環境変数を設定しようとしました。他の誰かが助けることができるこの問題を抱えていましたか?
python - PyTablesのバッチ取得と更新
PyTablesを使用して作成されたHDF5ファイルとして毎日の株式データがあります。行のグループを取得し、それを配列として処理してから、PyTablesを使用してディスクに書き戻します(行を更新します)。私はこれをきれいに行う方法を見つけることができませんでした。これを達成するための最良の方法を教えてください。
私のデータ:
各シンボルに対応する行を配列として読み取り、処理を実行して、フィールドvar1とvar2を更新したいと思います。私はすべての記号を事前に知っているので、それらをループすることができます。私はこのようなことを試みました:
rows_arrayを別の関数に渡して、var1とvar2の値を計算し、レコードごとに更新したいと思います。var1、var2は移動平均に似ているため、イテレータ内でそれらを計算することはできません。したがって、行のセット全体を配列にする必要があることに注意してください。
rows_arrayを使用して必要なものを計算した後、それをデータに書き戻す方法、つまり、新しい計算値で行を更新する方法がわかりません。テーブル全体を更新するとき、私はこれを使用します:
ただし、テーブルの一部だけを更新したい場合は、それを行うのが最善の方法ではありません。'where'条件を再実行して、計算に基づいて各行を更新できると思いますが、テーブルを再スキャンするのは時間の無駄のようです。
あなたの提案は大歓迎です...
ありがとう、-e
python - Python での大規模な多次元データ セットの保存と再読み込み
大量のシミュレーションを実行して大量のデータを生成し、それらを保存して後で再度アクセスする必要があります。シミュレーション プログラムからの出力データは、テキスト ファイルに書き込まれます (シミュレーションごとに 1 つ)。これらのテキスト ファイルを読み取り、後で分析するのにより便利な形式でデータを保存する Python プログラムを作成する予定です。かなりの検索の後、私は情報過多に苦しんでいると思うので、この質問を Stack Overflow に投稿してアドバイスを求めています。詳細は次のとおりです。
私のデータは基本的に多次元配列の形式を取り、各エントリは次のようになります。
各引数には、おおよそ次の数の潜在的な値があります。
stringArg1: 50
stringArg2: 20
stringArg3: 6
stringArg4: 24
intArg1: 10,000
ただし、データセットはまばらになることに注意してください。たとえば、stringArg1 の特定の値に対して、stringArg2 の約 16 個の値のみが入力されます。また、(stringArg1, stringArg2) の特定の組み合わせに対して、intArg1 の約 5000 の値が入力されます。3 番目と 4 番目の文字列引数は次のとおりです。常に完全に満たされています。
したがって、これらの数値を使用すると、配列にはおよそ 50*16*6*24*5000 = 576,000,000 の結果リストが含まれます。
この配列を保存して後で再度開いて、データを追加したり、既存のデータを更新したり、分析のために既存のデータをクエリしたりできるようにするための最良の方法を探しています。これまで、私は 3 つの異なるアプローチを検討してきました。
リレーショナル データベース
PyTable
タプルをディクショナリ キーとして使用する Python ディクショナリ (保存とリロードに pickle を使用)
3 つのアプローチすべてで遭遇する問題が 1 つあります。私は常に (stringArg1、stringArg2、stringArg3、stringArg4、intArg1) のすべてのタプルの組み合わせを、テーブルのフィールドとして、または Python 辞書のキーとして格納することになります。私の(おそらく素朴な)観点からは、これは必要ないように思えます。これらがすべて整数の引数である場合、それらは配列内の各データ エントリのアドレスを形成するだけであり、考えられるすべてのアドレスの組み合わせを別のフィールドに格納する必要はありません。たとえば、2x2 配列 = [[100, 200] , [300, 400]] がある場合、アドレス配列 [0][1] の値を要求して値を取得します。すべての可能なアドレス タプル (0,0) (0,1) (1,0) (1,1) を別の場所に保存する必要はありません。だから私はこれを回避する方法を見つけることを望んでいます。
私ができるようになりたいのは、PyTables でテーブルを定義することです。この最初のテーブルのセルには他のテーブルが含まれています。たとえば、最上位テーブルには 2 つの列があります。最初の列のエントリは、stringArg1 の可能な値になります。2 番目の列の各エントリはテーブルになります。これらのサブテーブルには 2 つの列があり、最初の列は stringArg2 のすべての可能な値であり、2 番目の列はサブサブテーブルの別の列です...
この種のソリューションは、参照とクエリが簡単です (特に、ViTables を使用してデータを参照できる場合)。問題は、PyTables が 1 つのテーブルのセルに他のテーブルを含めることをサポートしていないように見えることです。だから私はそこで行き止まりにぶつかったようです。
私はデータ ウェアハウジングとスター スキーマ アプローチについて調べてきましたが、それでも、ファクト テーブルには考えられるすべての引数の組み合わせのタプルを含める必要があるようです。
さて、それは私がいるところです。あらゆるアドバイスをいただければ幸いです。この時点で、私は頭が痛いほど探し回っています。専門家に聞く時が来たと思います。
python - 正規表現を使用してPython文字列の16進値を削除するにはどうすればよいですか?
matlabにセル配列があります
matlabのhdf5write関数を使用して配列をhdf5形式で保存するこれらのスクリプトを使用します。
次に、pytablesを使用してhdf5ファイルをpythonに読み込みます。セル配列は、文字列の多数の配列として提供されます。リストに変換すると、これが出力になります。
これらの16進値はどこかから文字列にポップインするので、削除したいと思います。それらはリストの最初の3つの項目に常に表示されるとは限らないので、それらに対処したり、そもそもなぜそこにあるのかを知るための良い方法が必要です。
正規表現を使用して16進値を削除しようとしましたが、うまくいきませんでした。
これに対処する方法について何か提案はありますか?
python - PyTablesでは、可変長のネストされた配列を作成する方法は?
Python 2.6 で PyTables 2.2.1 を使用しています。可変長のネストされた配列を含むテーブルを作成したいと考えています。
私は PyTables のドキュメントを検索しました。チュートリアルの例 ( PyTables Tutorial 3.8 ) は、長さ = 1 のネストされた配列を作成する方法を示しています。しかし、この例では、可変数の行をデータ 'info2/info3/x ' および 'info2/info3/y'?
おそらくテーブル構造を理解しやすくするために、ここに私の自家製の例を示します。
PyTables のドキュメントには、そのような構造が不可能であるという兆候は見つかりませんでした...しかし、そのような構造が実際に不可能な場合、可変長のネストされた列に代わるものは何ですか?
- Eアレイ? VLアレイ? もしそうなら、これらのデータ型を上記の構造に統合する方法は?
- 他のアイデア?
どんな支援も大歓迎です!
追加情報付きの編集:PyTablesの専門家は、「そのような構造は可能ですか?」という質問にすでに対処しているようです:
類似の PyTable データ構造を作成する方法を見つけた人はいますか?
再度、感謝します!