为什么Python numpyfloat32/int除法给出float64结果?

2024-03-29 08:34:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个浮点数32矩阵V,然后我用一个整型标量值除法:

V = V/num

其中num是一个整数。结果有点令人惊讶,V被转换成a数字浮点数64矩阵。在

有人能帮我理解为什么会这样吗?在

谢谢!在


Tags: 矩阵数字整数num标量浮点数
1条回答
网友
1楼 · 发布于 2024-03-29 08:34:51

{根据},浮点数32无法无损保存int32。当操作使用int32时,numpy将结果值提升为float64。另外,根据@Eric的说法,实际的int类型可能会在不同的环境中发生变化,因此预测试是一个很好的实践,可以避免一些潜在的意外。在

建议进一步阅读之前类似的问题:Numpy casting float32 to float64 。Numpy对纯标量操作和涉及数组的操作有不同的处理方式。在本例中,除法操作涉及一个ndarray,因此当num小于65536但大于t255时,numpy将其转换为int16。Numpy确定int16可以无损地转换为float32,而int32不能。这可以通过np.can_cast(np.int16, np.float32)给出{}而{}给出{}来表示。在

谢谢你在这个问题下的有见地的评论。这个答案是对这些评论的简短总结。在

相关问题 更多 >