我想根据给定 NumPy 所暗示的约束测试一个未知值dtype
——例如,如果我有一个整数值,它是否足够小以适合 a uint8
?
据我所知,NumPy 的dtype
架构并没有提供这样的方法:
### FICTIONAL NUMPY CODE: I made this up ###
try:
numpy.uint8.validate(rupees)
except numpy.dtype.ValidationError:
print "Users can't hold more than 255 rupees."
我的小幻想 API 基于 Django 的模型字段验证器,但这只是一个例子——我设法设计的最佳机制是这样的:
>>> nd = numpy.array([0,0,0,0,0,0], dtype=numpy.dtype('uint8'))
>>> nd[0]
0
>>> nd[0] = 1
>>> nd[0] = -1
>>> nd
array([255, 0, 0, 0, 0, 0], dtype=uint8)
>>> nd[0] = 257
>>> nd
array([1, 0, 0, 0, 0, 0], dtype=uint8)
通过numpy.ndarray
typed as 显式地将可疑值往返numpy.uint8
返回给我已包装成具有适当大小的整数的整数 - 不会抛出异常或引发任何其他类型的可操作错误状态。
当然,我宁愿不穿建筑宇航员飞行服,但这是更可取的选择,这看起来像是无法维护的意大利面条怪物混乱的if dtype(this) ... elif dtype(that)
陈述。除了开始编写自己的 API 的宏伟而放纵的行为之外,我还能在这里做些什么吗?