python - Numpy:np.finfo 不会像预期的那样失败
问题描述
我正在使用 numpy.iinfo 和 np.finfo 来测试给定类型或值是否对应于整数或浮点数。处理None时有一种奇怪的行为。
正如预期的那样,以下失败:
np.iinfo(None)
尽管如此
np.finfo(None)
没有,正如我所料。那是一个错误吗?恕我直言,当 type(None) 返回 NoneType 时,np.finfo 应该像 np.iinfo 一样失败。
解决方案
在纯粹的技术层面上,我们可以通过查看源代码来解释您所看到的
相关的片段将是
@set_module('numpy')
class finfo(object):
<--snip-->
def __new__(cls, dtype):
try:
dtype = numeric.dtype(dtype)
except TypeError:
# In case a float instance was given
dtype = numeric.dtype(type(dtype))
您看到的行为是np.dtype(None)
评估 to的结果dtype('float64')
,这对我来说本身并不是 100% 自然的。其他人(包括开发人员)似乎同意。例如
哦,好吧,我们可能会弃用 dtype(None),这似乎没什么用,但我不知道这是否值得费心......
基于这个讨论和上面的代码,None
处理方式确实看起来有点意外,但这只是我有根据的猜测。
推荐阅读
- import - 如何从 src 子文件夹中的文件导入?
- python - Stripe ID 保存到 Django AbstractUser 表中的新行
- r - 如何使用 R 而不是整个数据表更改 excel 文件中的单个条目?
- amazon-ec2 - AWS 防火墙首选项
- sql-server - 使用特殊字符检查字符串是否有效
- angular - 第二个 ngb-tab 中的模板驱动表单验证
- php - 如何通过多对多关系获得不同的记录
- docker - Docker 完全填满了我的磁盘空间并杀死了我的机器
- vba - 使用 VBA 在 PowerPoint 中格式化表格
- asp.net - 将 WebApi 和 Angular 部署到 IIS