1

私はこれに対する答えを探しましたが、実際に法案に合うものはないようです。ATpy で読み取ろうとしている非常に大きなファイルがあり、データは numpy 配列の形式になっています。小さいファイルの場合、次のコードで十分です。

sat = atpy.Table('satellite_data.tbl')

そこから、プロットの目的で後で操作する必要がある変数をいくつか作成します。これらの種類の操作がたくさんあります。

w1 = np.array([sat['w1_column']])
w2 = np.array([sat['w2_column']])
w3 = np.array([sat['w3_column']])

colorw1w2 = w1 - w2 #just subtracting w2 values from w1 values for each element
colorw1w3 = w1 - w3 

しかし、非常に大きなファイルの場合、コンピューターはそれを処理できません。解析が開始される前にすべてのデータがメモリに格納されていると思いますが、2GB のファイルには適していません。では、これらの大きなファイルを処理するために代わりに何を使用できますか?

人々がデータをチャンクに分割し、forループを使用して各行を反復している投稿をたくさん見てきましたが、これらのファイルの性質と操作の種類を考えると、ここではうまくいかないと思いますこれらの配列で行う必要があります。ファイルのすべての行に対して単一の操作を実行することはできません。各行には、列に割り当てられた多数のパラメーターが含まれているためです。場合によっては、単一の列の数値に対して複数の操作を実行する必要があります。

正直なところ、ATpy と numpy を使用して舞台裏で行われているすべてのことをよく理解していません。私は Python を初めて使用するので、それを明確に説明する回答に感謝します (つまり、多くの暗黙のコーディング知識に頼らないでください)。これを解析するきれいな方法が必要ですが、私はそれを見つけていません。ありがとう。

4

2 に答える 2

0

非常に大きな配列 (メモリ容量よりも大きい) の場合、(HDF5 形式を使用して) いくつかの巧妙な方法で配列をディスクに格納するpytablesを使用して、配列全体を一度にメモリにロードすることなく配列を操作できるようにすることができます。これにより、データセットを手動で分割したり、一度に 1 行ずつ操作したりする必要がなくなります。

私はATpyについて何も知らないので、ATpyには別のソリューションが組み込まれている可能性があるため、ATpyメーリングリストまたは少なくとも一部の天文学のpythonユーザーのメーリングリストで質問する方がよいかもしれません.


pyables の Web サイトから:

PyTables は、階層的なデータセットを管理するためのパッケージであり、非常に大量のデータを効率的かつ簡単に処理できるように設計されています。

PyTables は、Python 言語と NumPy パッケージを使用して、HDF5 ライブラリの上に構築されています。

... 非常に大量のデータをインタラクティブに参照、処理、検索するための、高速でありながら非常に使いやすいツールです。PyTables の重要な機能の 1 つは、メモリとディスク リソースを最適化して、データが占めるスペースを大幅に削減することです...

于 2013-04-15T01:13:13.403 に答える
0

パンダの使用を検討してください。このような作業のために作られています。ただし、どのようなソリューションでも優れたパフォーマンスを得るには、データ ファイルを hdf5 のような適切に構造化されたバイナリ形式で保存する必要があります。

于 2013-04-15T05:11:30.417 に答える