如何在 float32 而不是 float64 上强制 python 浮动操作?
Posted
技术标签:
【中文标题】如何在 float32 而不是 float64 上强制 python 浮动操作?【英文标题】:How to force python float operation on float32 rather than float64? 【发布时间】:2013-12-25 02:43:41 【问题描述】:我想对float32
而非float64
类型进行一些数学运算(+、-、*、/)。我需要对number
或numpy.array
进行这些操作,以及一些numpy 数学函数,例如sqrt mean
。我该怎么做?
【问题讨论】:
http://docs.scipy.org/doc/numpy/user/basics.types.html 【参考方案1】:numpy.float32 会有帮助吗?
>>>PI=3.1415926535897
>>> print PI*PI
9.86960440109
>>> PI32=numpy.float32(PI)
>>> print PI32*PI32
9.86961
如果您想对 float32 进行数学运算,请将操作数转换为 float32 可能会对您有所帮助。
【讨论】:
是的。 numpy.float32 可以帮助我。有没有其他方法可以做到这一点 是的,当使用数组时,如果不是float32,可以调用它的astype方法:docs.scipy.org/doc/numpy/reference/generated/…【参考方案2】:使用numpy.ndarray.astype:
import numpy as np
arr_f64 = np.array([1.0000123456789, 2.0000123456789, 3.0000123456789], dtype=np.float64)
arr_f32 = arr_f64.astype(np.float32)
注意精度:
np.set_printoptions(precision=16)
print("arr_f64 = ", arr_f64)
print("arr_f32 = ", arr_f32)
给予
arr_f64 = [1.0000123456789 2.0000123456789 3.0000123456789]
arr_f32 = [1.0000124000000 2.0000124000000 3.0000124000000]
【讨论】:
以上是关于如何在 float32 而不是 float64 上强制 python 浮动操作?的主要内容,如果未能解决你的问题,请参考以下文章
从 float32 -> float64 回到 float32,我会失去精度吗?