我想尝试int(val)== val但是当float设置为整数值(而不是type)时,这不起作用.
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.
解决方法 您可以将isinstance与包含感兴趣类型的元组参数一起使用.要捕获所有python和numpy整数类型,请使用:
isinstance(value,(int,np.integer))
以下示例显示了几种数据类型的结果:
vals = [3,np.int32(2),np.int64(1),np.float64(0)][(e,type(e),isinstance(e,np.integer))) for e in vals]
结果:
[(3,<type 'int'>,True),(2,<type 'numpy.int32'>,(1,<type 'numpy.int64'>,(0.0,<type 'numpy.float64'>,False)]
第二个例子,仅适用于int和int64:
[(e,np.int64))) for e in vals]
结果:
[(3,False),(0,False)]总结
以上是内存溢出为你收集整理的在Python中,如何检查数字是否是整数类型之一?全部内容,希望文章能够帮你解决在Python中,如何检查数字是否是整数类型之一?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)