在Python中,如何检查一个数字的类型是否为整数(而不必检查每种整数类型,例如'int'
、'numpy.int32'
或'numpy.int64'
)?
我曾尝试过if int(val) == val
,但如果将浮点数设置为整数值(而非类型),这种方法就无法工作。
In [1]: vals = [3, np.ones(1, dtype=np.int32)[0], np.zeros(1, dtype=np.int64)[0], np.ones(1)[0]]
In [2]: for val in vals:
...: print(type(val))
...: if int(val) == val:
...: print('{} is an int'.format(val))
<class 'int'>
3 is an int
<class 'numpy.int32'>
1 is an int
<class 'numpy.int64'>
0 is an int
<class 'numpy.float64'>
1.0 is an int
我想要过滤掉最后一个值,它是一个numpy.float64
类型。
np
数据类型),您可以检查dtype
。请参见https://dev59.com/1VkS5IYBdhLWcg3wJDa6。如上所述,`arr [0] .item()`将提取项目到Python数字类型。 - hpauljnumpy
包装器。使用item()
来移除它。 - hpauljitem()
适用于numpy对象,但如果数字已经是Python数值类型,则会崩溃。它可以在try: except:
子句中使用,但不能在单行if
语句中使用。 - Steven C. Howellnp.float64.__mro__
(以及其他dtypes
)。由于float
在该列表中,因此isinstance(np.float64(2), float)
返回True
。 - hpaulj