我可以将float128设为numpy中的标准浮动数组吗
我在我的数值程序中遇到了一个问题,我想知道这是否是精度问题(也就是四舍五入误差)。有没有什么简单的方法可以把我程序中的所有浮点数组都改成 float128
数组,而不需要逐行去修改代码,反复输入 dtype='float128'
。我的数组现在都是 float64,但我并没有明确写 dtype='float64'
,所以我希望能有办法改变这个默认设置。
1 个回答
19
我觉得没有一个统一的“配置”可以改变这个情况。你可以考虑以下几种方法:
如果你只是用NumPy的一些工厂函数来创建数组,可以把这些函数换成你自己写的版本。如果你像这样导入这些函数:
from numpy import empty
那么你只需要这样做:
from numpy import float128, empty as _empty def empty(*args, **kwargs): kwargs.update(dtype=float128) _empty(*args, **kwargs)
如果你在做:
import numpy
你可以写一个模块叫做
mynumpy.py
from numpy import * _empty = empty def empty(*args, **kwargs): kwargs.update(dtype=float128) _empty(*args, **kwargs)
然后像这样导入它:
import mynumpy as numpy
重构你的代码,让它总是使用
dtype=myfloat
。这样将来做这样的修改会更简单。你可以结合使用numpy.empty_like()
、numpy.zeros_like()
和numpy.ones_like()
,在合适的地方尽量减少实际数据类型的硬编码。创建一个
numpy.ndarray
的子类,只用你自定义的构造函数来创建新的数组。