如何检查numpy.array的所有元素是否为同一数据类型?

1 投票
2 回答
2502 浏览
提问于 2025-04-17 21:39

我有几个numpy数组,它们的格式可以是

[1.525, 2.565, 6.367, ...]  # elements are float numbers

或者

['', '', '', ...]  # elements are empty strings

我想知道一个数组里的所有元素是否都是同一种数据类型。

目前,我使用的是:

if isinstance(np.any(time_serie),float):
    return sum(time_serie)

但是这个方法不管用。我遇到了以下错误:

TypeError: cannot perform reduce with flexible type

所以,我想知道有什么办法可以解决这个问题吗?谢谢。

2 个回答

0

你可以考虑使用列表推导式或者 map() 函数来生成一系列的数据类型,然后从这个序列中创建一个 set(集合),接着检查这个集合的长度是否为 1。

2

如果你想要找到某种特定的数据类型,比如你例子中的所有项目都是浮点数,那么使用“映射”和“归约”这两个方法就可以解决这个问题:

>>> x = [1.525, 2.565, 6.367]

>>> all(map(lambda i: isinstance(i, float), x))
    True

>>> x = [1.525, 2.565, '6.367']

>>> all(map(lambda i: isinstance(i, float), x))
    False

撰写回答