gpt4 book ai didi

python - 为什么 Python numpy float32/int 除法给出 float64 结果?

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:59 24 4
gpt4 key购买 nike

我有一个 numpy.float32 矩阵 V,然后我用一个整数标量值做了除法:

V = V/num

其中 num 是一个整数。结果有点令人惊讶,V 被转换为 numpy.float64 矩阵。

谁能帮助理解为什么会这样?

谢谢!

最佳答案

根据 Numpy.result_type , numpy.float32 不能无损地保存 int32 。当操作使用 int32 时,numpy 会将结果值提升为 float64。另外根据@Eric 的说法,实际的 int 类型可能会在不同的环境中发生变化,因此预测试是避免一些潜在意外的好习惯。

建议进一步阅读之前的类似问题:Numpy casting float32 to float64 . Numpy 对纯标量运算和涉及数组的运算有不同的处理方式。在这种情况下,除法操作涉及到一个 ndarray,因此当 num 小于 65536 但大于 255 时,numpy 将其转换为 int16。 Numpy 确定 int16 可以无损地转换为 float32 而 int32 不能。这由 np.can_cast(np.int16, np.float32) 给出 True 但是 np.can_cast(np.int32, np.float32) 给出 False

感谢您在问题下提出的富有洞察力的评论。此答案是这些评论的简短摘要。

关于python - 为什么 Python numpy float32/int 除法给出 float64 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47295091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com