如何确定 numpy 数组是否包含整数?

新手上路,请多包涵

我知道有一个简单的解决方案,但目前似乎找不到。

给定一个 numpy 数组,我需要知道该数组是否包含整数。

检查数据类型本身是不够的,因为有多个 int 数据类型(int8、int16、int32、int64 …)。

原文由 saffsd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 622
2 个回答

numpy 书中 找到它!第 23 页:

层次结构中的其他类型定义特定类别的类型。这些类别可用于测试 self.dtype.type 返回的对象是否属于特定类(使用 issubclass)。

 issubclass(n.dtype('int8').type, n.integer)
>>> True
issubclass(n.dtype('int16').type, n.integer)
>>> True

原文由 saffsd 发布,翻译遵循 CC BY-SA 3.0 许可协议

检查整数类型不适用于整数浮点数,例如 4. 更好的解决方案是 np.equal(np.mod(x, 1), 0) ,如:

 >>> import numpy as np
>>> def isinteger(x):
...     return np.equal(np.mod(x, 1), 0)
...
>>> foo = np.array([0., 1.5, 1.])
>>> bar = np.array([-5,  1,  2,  3, -4, -2,  0,  1,  0,  0, -1,  1])
>>> isinteger(foo)
array([ True, False,  True], dtype=bool)
>>> isinteger(bar)
array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
    True,  True,  True], dtype=bool)
>>> isinteger(1.5)
False
>>> isinteger(1.)
True
>>> isinteger(1)
True

原文由 Peter D 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏