我有一个基于NumPy的库,有一些类重载算术运算.由于大量的错误检查,内部有点毛茸茸,但我遇到了一个严重的问题,我是怎么做的.
该库背后的想法是使程序员使用最少的语法和努力使其非常容易和直观.因此,我希望很容易组合不同数据类型的数组,并简单地将较窄的数据类型转换为更广泛的情况.
例如,如果我有两个数组,一个是dtype float64而另一个是dtype complex128,当它们一起添加时我想将float64转换为complex128,但是如果它是float64和complex192,我想转换为它.但是,如果它是float64和complex64的组合,则两者之间没有有效的转换而不会丢失float64的精度,所以我想将两者都转换为complex128.
我立即看到了这个问题,即如果我希望我的库完全可靠,我必须寻找每种类型的组合并确定它们最窄的常见加宽类型(想想最不常见的多重类型).我不想将所有内容转换为最宽泛的类型,因为这会很快变得内存效率低下,并且我经常在内存中存储非常大的数组.
有没有一种好方法可以确定两种NumPy类型之间最窄的常见加宽类型?
最佳答案 @amaurea有正确的想法;事实上,函数已经存在于numpy中.
看看
result_type和
promote_types.