问题描述
处理整数时,有多种类型可用(例如 int、numpy.int8、numpy.int16 等)。如果我编写了一个需要一个变量为整数的泛型函数,我如何针对 Python/numpy 中所有可能的“整数”类型测试该类型?关于浮动也可以问同样的问题。一开始我是这么想的
isinstance(np.int64(5),int)
会/应该会起作用,但不会。
有没有办法测试所有可用整数类型的整数变量?
解决方法
在 Python 中,只有一个 int
类型。如果要测试 numpy
中的所有整数类型,以及内置的 int
类型,可以使用:
isinstance(x,(int,np.integer))
其中 np.integer
是所有标量 numpy 整数类型的抽象基类。同样对于浮动,
isinstance(x,(float,np.floating))
,
您可以分别使用 numbers.Integral
和 numbers.Real
:
from numbers import Integral,Real
isinstance(x,Integral)
isinstance(x,Real)