2014-01-21 65 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也是float64(@Bakuriu thx用於指出)。但是,如果你將檢查蟒蛇浮動實例變量爲float64類型,你會因此得到False

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

注意'當'f'是'np.float64'時isinstance(f,float)'是'True',因爲'np.float64'繼承自python的'float'。 – Bakuriu

+0

只要有人認爲'float64'就是'float'這個概念,就是這樣的。只要堅持這個概念。 – Alfe

1

如果你只比較numpy的類型,它可能是更好的基礎的上的數字比較來識別每一個D型,其是底層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