ASCII表 (astropy.io.ascii
)¶
序言:序言¶
astropy.io.ascii
ASCIIデータテーブル形式を内蔵した各種ASCIIデータテーブルフォーマットの読み出しおよび書き込み方法の提供 拡張モジュールリーダクラス それがそうです。読者は柔軟性の低いC言語ベースのエンジンを用いて読み書きを行うことを選択して性能を向上させることができるにもかかわらず,使用の柔軟性と利便性に重点を置いている.
以下にいくつかの利用可能なASCIIフォーマットを示す. Supported formats 完全リストが含まれています。
Basic
:カスタマイズ可能なセパレータとヘッダ構成を有する基本テーブルCds
: CDS format table (VizierおよびAPJマシン可読表を参照)Daophot
:IRAF DAOphotパッケージからのフォームEcsv
: ECSVフォーマット データテーブル用の非破壊往復FixedWidth
:固定幅列を有する表(なお参照 固定幅画廊 )HTML
:<table>タグに含まれるHTMLフォーマット表Latex
:データ値の位置tabular
環境.Rdb
:タブ区切り値、列定義行の後に1行追加
The strength of astropy.io.ascii
is the support for astronomy-specific
formats (often with metadata) and specialized data types such as
SkyCoord, Time, and Quantity. For reading or writing large
data tables in a generic format such as CSV, using the Table - Pandas
interface is a recommended option to consider.
注釈
使用中の機能を奨励することもできます astropy.io.ascii
通過する. Data Tables 小包です。参照してください 統一ファイル読み書きインタフェース もっと細かいことを知っています。
スタート¶
表を読む¶
一般的なASCII表の多くはご利用いただけます read()
機能します。もしあなたが名前を持っているとしましょう sources.dat
内容は以下のとおりである.
obsid redshift X Y object
3102 0.32 4167 4085 Q1250+568-A
877 0.22 4378 3892 "Source 82"
この表は、以下のように読むことができる。
>>> from astropy.io import ascii
>>> data = ascii.read("sources.dat")
>>> print(data)
obsid redshift X Y object
----- -------- ---- ---- -----------
3102 0.32 4167 4085 Q1250+568-A
877 0.22 4378 3892 Source 82
最初のパラメータは read()
関数は、ファイル名、テーブルの文字列表現形式、または表行リストであってもよい。返り値. (data
本例では)は1つである Table 物体です。
デフォルトの場合、 read()
やってみます guess the table format 全てを試してみることで supported formats それがそうです。
警告
大規模なファイルの場合、リーダは、1つのフォーマットが成功するまで、各許容フォーマットを使用してファイルを解析しようと試みるので、ファイルフォーマットの推測は通常遅い。大きな書類については、推測を無効にすることをお勧めします guess=False
それがそうです。
もし推測フォーマットが機能しなければ、異常な表をフォーマットするように、あなたは与える必要があるかもしれません。 astropy.io.ascii
フォーマットに関する他の提示。
実例.¶
例外をフォーマットするフォームについては、フォーマットに関する他のプロンプトを提供してください:
>>> lines = ['objID & osrcid & xsrcid ',
... '----------------------- & ----------------- & -------------',
... ' 277955213 & S000.7044P00.7513 & XS04861B6_005',
... ' 889974380 & S002.9051P14.7003 & XS03957B7_004']
>>> data = ascii.read(lines, data_start=2, delimiter='&')
>>> print(data)
objID osrcid xsrcid
--------- ----------------- -------------
277955213 S000.7044P00.7513 XS04861B6_005
889974380 S002.9051P14.7003 XS03957B7_004
ファイルのフォーマットが既知である場合(例えば、固定幅のテーブルまたはIPACテーブルである場合)、 format
パラメータの1つの値 supported formats それがそうです。例えば:
>>> data = ascii.read(lines, format='fixed_width_two_line', delimiter='&')
CSVのようなより簡単なフォーマットでは read()
自動試行をCython/C解析エンジンを用いて読み取りますが、これは通常のPythonよりもはるかに速いです(参照 FAST ASCII I/O )である。FASTエンジンが故障したら read()
デフォルトではPythonリーダーに依存します。この論点は fast_reader
この行為を制御するために指定することができる.例えば、FASTエンジンを無効にする:
>>> data = ascii.read(lines, format='csv', fast_reader=False)
非常に大きなテーブルの読み取りに関する情報は、ご参照ください 大表をブロックして読み取る または使用する pandas (以下の注釈を参照)。
注釈
純粋なPythonリーダーは、Unicode文字を含むテーブルの読み取りをサポートし、方法は指定されています encoding
パラメータです。高速なC言語リーダはUnicodeをサポートしていません。Unicodeを含む大型データファイルについては、使用をお勧めします pandas 変換しています Table 通過する. Table - Pandas interface それがそうです。
用紙を書く¶
♪the write()
関数は、フォーマットされたASCIIテーブルにデータテーブルを書き込む方法を提供する。
実例.¶
以下のコードは、フォームを簡単なスペース区切りファイルとして書きます。
>>> import numpy as np
>>> from astropy.table import Table, Column, MaskedColumn
>>> x = np.array([1, 2, 3])
>>> y = x ** 2
>>> data = Table([x, y], names=['x', 'y'])
>>> ascii.write(data, 'values.dat', overwrite=True)
♪the values.dat
そして、ファイルには、:
x y
1 1
2 4
3 9
サポートされているほとんどの入力リーダフォーマット astropy.io.ascii
読み出しについては,書き込みもサポートしている.これはフォーマットを作成するために大きな柔軟性を提供する。以下の例では、データをLaTeXテーブルとして書き込み、出力を送信するオプションを使用する sys.stdout
ファイルではありません:
>>> import sys
>>> ascii.write(data, sys.stdout, format='latex')
\begin{table}
\begin{tabular}{cc}
x & y \\
1 & 1 \\
2 & 4 \\
3 & 9 \\
\end{tabular}
\end{table}
簡単なフォーマットを作成するためのより高速なCythonエンジンもあり、デフォルトでこれらのフォーマットのエンジンを有効にします(参照 FAST ASCII I/O )である。このエンジンを無効にするには、パラメータを使用してください fast_writer
**
>>> ascii.write(data, 'values.csv', format='csv', fast_writer=False)
最後に、ユーザはデータを書き込むことができます ECSVフォーマット これは、列データタイプおよびユニットのようなテーブルメタデータを保存することを可能にする。このようにして、データテーブル(マスクエントリを有するデータテーブルを含む)は、情報を失うことなく、ASCIIフォーマットで格納および読み取りすることができる。
>>> t = Table(masked=True)
>>> t['x'] = MaskedColumn([1.0, 2.0], unit='m', dtype='float32')
>>> t['x'][1] = np.ma.masked
>>> t['y'] = MaskedColumn([False, True], dtype='bool')
>>> import io
>>> fh = io.StringIO()
>>> t.write(fh, format='ascii.ecsv')
>>> table_string = fh.getvalue()
>>> print(table_string)
# %ECSV 0.9
# ---
# datatype:
# - {name: x, unit: m, datatype: float32}
# - {name: y, datatype: bool}
x y
1.0 False
"" True
>>> Table.read(table_string, format='ascii')
<Table masked=True length=2>
x y
m
float32 bool
------- -----
1.0 False
-- True
注釈
ほとんどのサポートされているフォーマットについては、シールドテーブルに書き込み、その後、シールドテーブルエントリに関する情報を失うことなく読み返すことができる。これは、空文字列エントリを使用してマスク(欠落)値を示すことによって達成される。ご参照ください 誤りまたは不足値 部分的にもっと情報を知っています。
サポートのフォーマット¶
サポートされている完全リスト format
以下にASCIIテーブルの値と対応するフォーマットタイプを与える.♪the Write
列は、どのフォーマットが書き込み機能をサポートしているかを示します。 Fast
列は、FAST Cython/Cエンジンと互換性のあるどのフォーマットが読み書きを行うかを示します。
格式. |
書く. |
素早い |
説明する. |
---|---|---|---|
|
はい、そうです。 |
|
|
|
はい、そうです。 |
はい、そうです。 |
|
|
|
||
|
はい、そうです。 |
はい、そうです。 |
|
|
はい、そうです。 |
はい、そうです。 |
|
|
|
||
|
はい、そうです。 |
|
|
|
はい、そうです。 |
|
|
|
はい、そうです。 |
|
|
|
はい、そうです。 |
|
|
|
はい、そうです。 |
|
|
|
はい、そうです。 |
|
|
|
はい、そうです。 |
|
|
|
はい、そうです。 |
はい、そうです。 |
|
|
はい、そうです。 |
はい、そうです。 |
|
|
はい、そうです。 |
|
|
|
|
||
|
はい、そうです。 |
はい、そうです。 |
|
注意
ECSVのご利用がおすすめです
表データ,タイプ,メタデータを完全に複製するように表をASCIIに書き込む(すなわち,表は“往復”する),利用を強く提案する. ECSVフォーマット それがそうです。これは簡単なスペース区切り形式で実際のデータに書き込まれます( basic
フォーマット)は、どのASCIIテーブルリーダも解析可能であるが、ソース列を完全に再構成することを可能にする注釈ブロックにおいて符号化されたメタデータも含む。これには支援も含まれています 混合柱 (例えば、 SkyCoord
あるいは…。 Time
)と 遮蔽柱. それがそうです。
Vbl.使用 astropy.io.ascii
¶
使用の詳細情報 astropy.io.ascii
以下の各節で関連情報を提供する.
表を読む¶
用紙を書く¶
固定幅画廊¶
高速ASCIIエンジン¶
基底類元素¶
拡張モジュールリーダクラス¶
性能提示¶
デフォルトでは、ファイルの読み取りを試みるとき、リーダは、多くの異なるリーダを使用してファイルを読み取ることを試みることに関連するフォーマットを推測する。大きなテーブルを処理する際により良い性能を得るために、フォーマットおよび任意のオプションを明示的に指定し、推測をオフにすることを提案する。
例を引く¶
1行のタイトルと列名を持つ簡単なCSVファイルを読み出している場合は、以下の操作を実行してください。
read('example.csv', format='basic', delimiter=',', guess=False) # doctest: +SKIP
少なくとも1桁速い:
read('example.csv') # doctest: +SKIP
参照/API¶
Asterpy.io.asciiバッグ¶
拡張可能なASCIIフォームリーダ及びライタを提供する。
機能¶
|
リストをNumpy配列に変換する関数と、変換器関数によって生成されるタイプとを含むタプルに戻る。 |
|
前回の呼び出しの試みに戻ってフォーマットのバックトラックを読み込む. |
|
初期化テーブルリーダは,汎用カスタマイズを許可する. |
|
初期化テーブルライタは,汎用カスタマイズを許可する. |
|
入力を読む |
|
設ける |
|
書き込み入力 |
クラス¶
エーエーSTeX格式表です。 |
|
|
他のすべてのデータタイプのサブクラス。 |
|
基本表データリーダ。 |
|
基表表頭リーダー |
|
表入力から行を取得し,行リストを返す. |
|
表を列名をキーワードとする列対象の辞書として出力する. |
|
クラスの新しいインスタンスであって、このクラスは、指定されたヘッダ、データ、入力器、および出力器インスタンスを使用してASCIIテーブルを読み出しおよび書き込む方法を提供する。 |
|
PythonのSplit方法を用いて動作を行う基礎分解器。 |
|
文字で区切られたテーブルは、上部に1つのタイトル行しかありません。 |
|
基本表データリーダ |
|
基本表頭リーダー |
|
CDSフォーマット表。 |
|
表の列です。 |
|
文字で区切られた表は、列名が注釈行に位置しています。 |
行が以下の文字で終わる入力器 |
|
|
CSV(コンマ区切り値)表。 |
|
DAOphotフォーマット表です。 |
|
Python CSVを使用して文字列を列のデフォルトクラスに分割します。 |
|
ECSV(拡張文字区切り値)フォーマットテーブルです。 |
|
このような目的は一般的なものと |
|
もっと速いバージョンの |
より速い通常バージョン |
|
|
このクラスはFAST Cエンジンを用いてヘッダラインのないテーブルを読み込む. |
もっと速いバージョンの |
|
より速い通常バージョン |
|
|
固定幅のテーブルは,列名と位置を定義する単一の見出し行を持つ. |
|
基本表データリーダ。 |
|
固定幅表ヘッドリーダー。 |
|
見出し行の固定幅テーブルはない. |
各線の固定始点と終点位置に基づいて線を分割する |
|
|
2つのタイトル行を有する固定幅テーブル。 |
|
浮動小数点データを記述する。 |
|
HTMLフォーマット表です。 |
入力表が何らかの点で一致しないことを示す. |
|
|
整数データを記述する。 |
|
アイピーシー格式です。 |
|
LaTeX格式表。 |
|
文字で区切られた表には、見出し行はありません。 |
|
超類です |
|
指示列はデジタルデータからなる. |
リーダに伝達のパラメータを処理できないように指示する. |
|
|
素早くきれいなグラフです。 |
|
ReStructiredText単純フォーマット表. |
|
タブで区切られたファイルは,数字(N)または文字列(S)データの列定義行を指定した後に1行加算する. |
|
SExtractor格式表。 |
|
指示列はテキストデータからなる. |
|
表札で区切られた表。 |
|
表をAsterpy.table.Tableオブジェクトとして出力する. |