2014-01-21 47 views
7

私には数字がある数値がfloat64であるかどうかを調べる

賢明なよう

a = 1.22373 

type(a) is float 

私は数が

float64 

であるかどうかを知りたいです。

どのように私はpythonまたはnumpyを使用して見つけるのですか?

答えて

13

使用isinstance

>>> f = numpy.float64(1.4) 
>>> isinstance(f, numpy.float64) 
True 
>>> isinstance(f, float) 
True 

numpy.float64はPythonネイティブfloat型から継承されます。これはfloatとfloat64の両方であるため(@Bakuriu thxを指摘するため)。これは、

>>> f = 1.4 
>>> isinstance(f, numpy.float64) 
False 
>>> isinstance(f, float) 
True 
+0

注 'そのisinstance(f、float) '' np.float64'はPythonの 'float'を継承しているので' f'が 'np.float64'のとき' True'です。 – Bakuriu

+0

そして、 'float64'が'浮動小数点型 'であるというアイデアがある限り、真実です。ただそのコンセプトに固執してください。 – Alfe

1

だけnumpyの種類を比較している場合、各DTYPEを識別する番号であなたの比較をベースにした方がよい場合があります。しかし、あなたは結果にFalseを取得するのfloat64タイプのためのpythonフロートインスタンス変数をチェックする場合は基本となるCコードが行うことです。私のシステムでは、12はnp.float64するための番号である:

>>> np.dtype(np.float64).num 
12 
>>> np.float64(5.6).dtype.num 
12 
>>> np.array([5.6]).dtype.num 
12 

も非numpyの値でそれを使用するには、次のようなもので、それを通して、あなたのようにアヒル-入力できます

def isdtype(a, dt=np.float64): 
    try: 
     return a.dtype.num == np.dtype(dt).num 
    except AttributeError: 
     return False 
関連する問題