为什么 numpy 会为 np.float16(3.0) + 0 和 np.float32(3.0) + 0 进行类型转换?

Why does numpy make a type casting for np.float16(3.0) + 0 and np.float32(3.0) + 0?

提问人:zell 提问时间:11/17/2022 最后编辑:zell 更新时间:11/17/2022 访问量:102

问:

您能解释一下为什么要进行这种类型的铸造吗?

In [49]: type(np.float16(3.0) + 0)
Out[49]: numpy.float64

In [50]: type(np.float32(3.0) + 0)
Out[50]: numpy.float64

尽管以下工作按预期进行

In [52]: type(np.float16(3.0) + np.float16(0))
Out[52]: numpy.float16

In [53]: type(np.float32(3.0) + np.float32(0))
Out[53]: numpy.float32

问题是我们什么时候这样做,为什么一切都是向上投射到 ,而不是分别向 和?np.float16(3.0) + 0np.float16(3.0) + 0numpy.float64numpy.float16numpy.float32

python numpy 浮点 类型转换

评论

0赞 Mark Ransom 11/17/2022
可能是因为作为这一切基础的 C 代码就是这样工作的。
1赞 hpaulj 11/17/2022
同时指定 0 的浮点数 dtype。 是一个 Python int,Python 的浮点数相当于(或者在较小的机器上可能是 32)。Python 没有等价于 .另请看 .np.float16(10)+np.float16(0)0float64float16np.array(0, float)

答: 暂无答案