如何检查numpy数组的所有元素是否都是整数值?

3
正如标题所说,这与元素的类型无关。 我需要确保元素的是整数,即:
np.array([1, 2, 3])
np.array([1., 2.0, 9/3])

在“它们是整数吗?”检查后,必须同时给出[ True,True,True ]。

有没有一种干净且Pythonic / Numpyic的方法可以做到这一点?

我已经尝试了一些多行组合,例如:

isinstance(x, (int, np.integer)) 
#or
(1.0).is_integer()

但它们笨重且难看。


我在这方面取得了一些进展。现在有一个独立的numpy函数可用。让我们看看它是否能够被纳入numpy中。 - Mad Physicist
3个回答

3

我使用的是这个quantity % int(quantity) == 0


这个无法处理 v 使得 int(v) == 0 的情况。 - Kukuster

2

另一种方法:

>>> x = np.array([1.,2.0,9/3])
>>> [not (i%1) for i in x]
[True, True, True]

1
这是一行使用 is_integer() 的代码:

>>> x = np.array([1., 2.0, 9/3])
>>> all([i.is_integer() for i in x])
True

我已经添加了一行使用 is_integer() 的解决方案,这不会很麻烦。 - Grayrigel
all(i.is_integer() for i in x) 更加正确。去掉 [] 后速度更快(即在遇到第一个非整数时停止)。创建临时列表没有意义。 - Andreas H.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接