微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查十进制.is_nan中数组中的所有值?

如何解决如何检查十进制.is_nan中数组中的所有值?

假设我有这样的数组:

from decimal import Decimal
array = [Decimal(np.nan),Decimal(np.nan),Decimal(0.231411)]

我知道如果类型是float,我可以检查所有值是否都是nan ,如:

np.isnan(array).all()

是否可以使用类型Decimal

没有迭代的解决方案会更好。

解决方法

根据我上面的评论,我意识到这是一个迭代。原因是np.isnan不支持Decimal作为输入类型。因此,我认为如果不转换数据类型就无法通过广播完成此操作-这意味着潜在的精度损失,这就是使用Decimal类型的原因。

此外,如@ juanpa.arrivillaga所述,由于Decimal对象位于list中,因此,迭代是唯一的方法。在此操作中不需要脾气暴躁。

一种方法是:

all([i.is_nan() for i in array])
,

您可以使用NumPy的vectorize来避免迭代。

In [40]: from decimal import Decimal

In [41]: import numpy as np

In [42]: nums = [Decimal(np.nan),Decimal(np.nan),Decimal(0.231411)]

In [43]: nums
Out[43]: 
[Decimal('NaN'),Decimal('NaN'),Decimal('0.2314110000000000055830895462349872104823589324951171875')]

In [44]: np.all(np.vectorize(lambda x: x.is_nan())(np.asarray(nums)))
Out[44]: False

In [45]: np.all(np.vectorize(lambda x: x.is_nan())(np.asarray(nums[:-1])))
Out[45]: True

nums上方的代码段中,列出了类Decimal的实例。请注意,您需要将该列表转换为NumPy数组。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。