NDData¶
概要¶
NDData
それに基づいて numpy.ndarray
-似てる data
他のメタ属性を使用する:
meta
通常のメタデータではunit
データを表す物理単位uncertainty
データに対する不確実性mask
指示データ中の無効点wcs
データメッシュと世界座標との関係を表す.
これらの属性の各々は、初期化中に設定されてもよいし、インスタンス上に直接設定されてもよい。ただ…。 data
インスタンスを作成した後に直接設定することはできません。
データ.データ¶
データはデータの基礎である NDData
次のような条件を満たすことが求められています numpy.ndarray
-そうだこれはインスタンスを作成するために必要な唯一の属性であり,インスタンス上に直接設定することはできない.
例を引く¶
インスタンスを作成するには、以下の操作を実行してください。
>>> import numpy as np
>>> from astropy.nddata import NDData
>>> array = np.array([[0, 1, 0], [1, 0, 1], [0, 1, 0]])
>>> ndd = NDData(array)
>>> ndd
NDData([[0, 1, 0],
[1, 0, 1],
[0, 1, 0]])
そして…。 data
属性::
>>> ndd.data
array([[0, 1, 0],
[1, 0, 1],
[0, 1, 0]])
前述したように、データを直接設定することは不可能である。だから…。 ndd.data = np.arange(9)
異常を引き起こすことになりますしかしその場でデータを修正することができます:
>>> ndd.data[1,1] = 100
>>> ndd.data
array([[ 0, 1, 0],
[ 1, 100, 1],
[ 0, 1, 0]])
初期化期間のデータ¶
初期化中に、そうではないことを提供することができます numpy.ndarray
しかし、一台に両替できます。
実例.¶
提供することができます numpy.ndarray
あなたは1つのことを伝えることができます list
含まれる数値:
>>> alist = [1, 2, 3, 4]
>>> ndd = NDData(alist)
>>> ndd.data # data will be a numpy-array:
array([1, 2, 3, 4])
入れ子の list
あるいは…。 tuple
可能であるが、これらの値が非デジタル値を含む場合、変換に失敗する可能性がある。
このような配列に変換可能な入力のほかに,利用可能である. data
パラメータは暗黙的付加情報を伝達する.例えばデータが別のものであれば NDData
これは、その属性のオブジェクトを暗黙的に使用する:
>>> ndd = NDData(ndd, unit = 'm')
>>> ndd2 = NDData(ndd)
>>> ndd2.data # It has the same data as ndd
array([1, 2, 3, 4])
>>> ndd2.unit # but it also has the same unit as ndd
Unit("m")
もう一つの可能性は Quantity
一人として data
パラメータ::
>>> import astropy.units as u
>>> quantity = np.ones(3) * u.cm # this will create a Quantity
>>> ndd3 = NDData(quantity)
>>> ndd3.data
array([1., 1., 1.])
>>> ndd3.unit
Unit("cm")
あるいは…。 numpy.ma.MaskedArray
**
>>> masked_array = np.ma.array([5,10,15], mask=[False, True, False])
>>> ndd4 = NDData(masked_array)
>>> ndd4.data
array([ 5, 10, 15])
>>> ndd4.mask
array([False, True, False]...)
このような暗黙的送達の属性が明示的パラメータと衝突する場合、明示的パラメータが使用され、INFOメッセージが発行される:
>>> quantity = np.ones(3) * u.cm
>>> ndd6 = NDData(quantity, unit='m')
INFO: overwriting Quantity's current unit with specified unit. [astropy.nddata.nddata]
>>> ndd6.data
array([1., 1., 1.])
>>> ndd6.unit
Unit("m")
の単位 Quantity
単位は無視され、単位は明示的に伝達される単位に設定される。
It might be possible to pass other classes as a data
parameter as long as
they have the properties shape
, dtype
, __getitem__
, and
__array__
.
この機構の目的は、有用なデフォルト値を提供しながら、データを格納するためのオブジェクトにおいてかなりの柔軟性を可能にすることである。 (numpy
配列)。
日除け.¶
♪the mask
データポイントが有効であるか無効であるかを示すために使用される。 NDData
このマスクはいかなる方法でも制限されないが,従うべきである numpy.ma.MaskedArray
慣例によれば、仮面:
返品
True
考慮したデータ点 無効 それがそうです。返品
False
次の点については 効き目がある それがそうです。
実例.¶
1つの可能な方法は、以下のコマンドを使用してマスクを作成することである numpy
比較演算子:
>>> array = np.array([0, 1, 4, 0, 2])
>>> mask = array == 0 # Mask points containing 0
>>> mask
array([ True, False, False, True, False]...)
>>> other_mask = array > 1 # Mask points with a value greater than 1
>>> other_mask
array([False, False, True, False, True]...)
初期化します NDData
実例的使用 mask
パラメータ::
>>> ndd = NDData(array, mask=mask)
>>> ndd.mask
array([ True, False, False, True, False]...)
マスクを交換することで:
>>> ndd.mask = other_mask
>>> ndd.mask
array([False, False, True, False, True]...)
このカバーは実際には要求されていません numpy
配列;例えば、必要に応じてマスク値を計算する関数は、それが従う限り許容可能である。 True
無視すべき値を指示する.
職場.職場.¶
♪the unit
データ値の単位を表す.それが要求されているのは Unit
-クラスまたはこのように変換可能 Unit
**
>>> import astropy.units as u
>>> ndd = NDData([1, 2, 3, 4], unit="meter") # using a string
>>> ndd.unit
Unit("m")
- .注:
設ける
unit
実例的には不可能である.
不確実性¶
♪the uncertainty
データ値の誤りを表す任意の表示形式.どの不確実性表現を使うかを指示するために uncertainty
一つあるはずです。 uncertainty_type
財産です。このような属性が見つからなければ UnknownUncertainty
それがそうです。
♪the uncertainty_type
従うべきだ StdDevUncertainty
コミットメントは,次のような短い文字列を返すためである "std"
標準偏差で表される不確定度について.他の例には VarianceUncertainty
そして InverseVariance
それがそうです。
実例.¶
他の属性と同様に uncertainty
初期化中に設定することができます:
>>> from astropy.nddata import StdDevUncertainty
>>> array = np.array([10, 7, 12, 22])
>>> uncert = StdDevUncertainty(np.sqrt(array))
>>> ndd = NDData(array, uncertainty=uncert)
>>> ndd.uncertainty
StdDevUncertainty([3.16227766, 2.64575131, 3.46410162, 4.69041576])
または、以下の動作をインスタンス上で直接実行する。
>>> other_uncert = StdDevUncertainty([2,2,2,2])
>>> ndd.uncertainty = other_uncert
>>> ndd.uncertainty
StdDevUncertainty([2, 2, 2, 2])
しかしそうでなければメッセージを印刷します uncertainty_type
**
>>> ndd.uncertainty = np.array([5, 1, 2, 10])
INFO: uncertainty should have attribute uncertainty_type. [astropy.nddata.nddata]
>>> ndd.uncertainty
UnknownUncertainty([ 5, 1, 2, 10])
WCS¶
♪the wcs
メッシュデータから世界座標へのマッピングを含むべきである.現在はこの属性に制限はありませんが、それは限られているかもしれません WCS
オブジェクトまたはより汎用的なWCSオブジェクト。
注釈
この単位のように wcs
インスタンスに設定することはできない.
メタデータ.¶
♪the meta
属性は,他のどの属性にも適合しない他のすべてのメタ情報を含む.
実例.¶
もし meta
属性が与えられていれば dict
-好き::
>>> ndd = NDData([1,2,3], meta={'observer': 'myself'})
>>> ndd.meta
{'observer': 'myself'}
dict
-LIKEは、いくつかのキーからいくつかの値へのマッピングでなければならないことを示します。これには Header
対象::
>>> from astropy.io import fits
>>> header = fits.Header()
>>> header['observer'] = 'Edwin Hubble'
>>> ndd = NDData(np.zeros([10, 10]), meta=header)
>>> ndd.meta['observer']
'Edwin Hubble'
もし meta
属性が提供されていない場合、または明示的に設定 None
デフォルトで空になります collections.OrderedDict
**
>>> ndd.meta = None
>>> ndd.meta
OrderedDict()
>>> ndd = NDData([1,2,3])
>>> ndd.meta
OrderedDict()
♪the meta
したがって、オブジェクトは、以下の値の追加または更新をサポートします。
>>> ndd.meta['exposure_time'] = 340.
>>> ndd.meta['filter'] = 'J'
メタデータ辞書の要素は、任意の有効なPythonオブジェクトに設定することができます:
>>> ndd.meta['history'] = ['calibrated', 'aligned', 'flat-fielded']
コピーを使って初期化する¶
創立 NDData
インスタンスの目的は、コピーとして保存するのではなく、パラメータを元のファイルへの参照として別に保存することを試みることである。内部メカニズムがそうすることを許さないので、時々これは不可能だ。
実例.¶
もし data
これは list
そして、初期化中に、 ndarray
それがそうです。ただし、初期化中に設定することでもよい copy
パラメータが到着する True
**
>>> array = np.array([1, 2, 3, 4])
>>> ndd = NDData(array)
>>> ndd.data[2] = 10
>>> array[2] # Original array has changed
10
>>> ndd2 = NDData(array, copy=True)
>>> ndd2.data[2] = 3
>>> array[2] # Original array hasn't changed.
10
NDDataを他のクラスに変換する¶
限られた支援だけが NDData
インスタンスは他のクラスに追加される.この過程で、いくつかの属性が失われる可能性がある。
>>> data = np.array([1, 2, 3, 4])
>>> mask = np.array([True, False, False, True])
>>> unit = 'm'
>>> ndd = NDData(data, mask=mask, unit=unit)
numpy.ndarray
¶
将 data
配列:
>>> array = np.asarray(ndd.data)
>>> array
array([1, 2, 3, 4])
使ったけど np.asarray
必要ではなく、ほとんどの場合、それは結果が常にそうであることを確実にするだろう。 numpy.ndarray
numpy.ma.MaskedArray
¶
将 data
そして mask
MaskedArrayまで:
>>> masked_array = np.ma.array(ndd.data, mask=ndd.mask)
>>> masked_array
masked_array(data=[--, 2, 3, --],
mask=[ True, False, False, True],
fill_value=999999)
Quantity
¶
将 data
そして unit
ある数まで:
>>> quantity = u.Quantity(ndd.data, unit=ndd.unit)
>>> quantity
<Quantity [1., 2., 3., 4.] m>
注釈
理想的には、あなたはマスクの数を構築しなければなりませんが、これらの数は適切に支持されていません:それらに対する多くの操作が失敗しました。