如何强制NumPy始终使用精度(float32,float64 ...)?

时间:2019-03-06 14:31:06

标签: python numpy floating-point precision

我正在尝试研究一些用Python编写的FIR示例。参见https://scipy-cookbook.readthedocs.io/items/FIRFilter.html

我的目标是研究每个float16float32float64(以numpy格式)的输出精度如何变化。因此,对于第一种情况,我只需要在float16中完成所有计算即可。问题是我应该每次强制转换数据以确保使用正确的格式。是否有一种方法可以在整个计算过程中始终使用统一的上下文,例如使用float16执行所有计算(加法,减法,cos,sin等),而无需使用强制类型转换代码? >

1 个答案:

答案 0 :(得分:1)

numpy basics

  

当使用不同类型的数组进行操作时,   结果数组对应于更通用或更精确的数组(a   这种行为称为“向上投射”。

您可以在创建数组时定义数据类型。应用求和,乘法或减法,结果将转换为“更大”类型,如果您对数组执行操作,例如,

,它也会保留dtype。
efg

一个例外是传递整数时,在这种情况下,默认情况下,将numpy上传到float64

x = np.ones(10, dtype=np.float16)
y = np.ones(10, dtype=np.float32)
print((x + y).dtype, (x - y).dtype, (x * y).dtype)
print(np.sin(x).dtype, np.sin(y).dtype)
>> float32 float32 float32
   float16 float32