如何检查numpy.array的所有元素是否为同一数据类型?
我有几个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