查找数字是否为float64

时间:2014-01-21 09:29:17

标签: python numpy floating-point

我有一个号码

e.g。

a = 1.22373

type(a) is float

同样明智的我想知道一个数字是

float64 
是不是。

我将如何使用python或numpy找到?

4 个答案:

答案 0 :(得分:21)

使用isinstance

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

numpy.float64继承自python native float类型。那是因为它既浮动又浮动64(@Bakuriu thx指出)。但是如果你要检查float64类型的python float实例变量,你将在结果中获得False

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

答案 1 :(得分:1)

如果您只是比较numpy类型,最好将比较基于识别每个dtype的数字,这是底层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

答案 2 :(得分:0)

我发现这是检查Numpy数字类型最可读的方法

import numpy as np
npNum = np.array([2.0]) 

if npNum.dtype == np.float64:
    print('This array is a Float64')

# or if checking for multiple number types:
if npNum.dtype in [np.float32, np.float64, np.integer]:
    print('This array is either a float64, float32 or an integer')

答案 3 :(得分:0)

如果您正在使用系列或数组,还可以检查 pandas.api.types.is_float_dtype(),它可以应用于系列或一组 dtypes;例如:

dts = df.dtypes # Series of dtypes with the colnames as the index
is_floating = dts.apply(pd.api.types.is_float_dtype)
floating_cols_names = dts[is_floating].index.tolist()

另见:

  • pandas.api.types.is_integer_dtype()
  • pandas.api.types.is_numeric_dtype()

请参阅 https://pandas.pydata.org/pandas-docs/version/1.1.4/reference/api/pandas.api.types.is_bool_dtype.html 及以下页面。