我能把float128设置为numpy中的标准浮点数组吗

2024-04-27 21:19:51 发布

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

所以我的数值程序有问题,我很好奇这是否是一个精度问题(即舍入误差)。有没有一种快速的方法可以将程序中的所有浮点数组都更改为float128数组,而无需遍历我的代码并到处键入dtype='float128'。我的数组都是float64,但是我从来没有显式地写过dtype='float64',所以我希望有一种方法可以改变这个默认行为。


Tags: 方法代码程序键入精度数组数值误差
1条回答
网友
1楼 · 发布于 2024-04-27 21:19:51

我不认为有一个中心的“配置”你可以改变,以实现这一点。您可以做的一些选择:

  1. 如果您只使用非常少的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
    
  2. 重构代码以始终使用dtype=myfloat。这将使这种变化在未来变得容易。您可以将此方法与numpy.empty_like()numpy.zeros_like()numpy.ones_like()的使用结合起来,以便在尽可能少的地方对实际的数据类型进行硬编码。

  3. 子类numpy.ndarray,并且仅使用自定义构造函数创建新数组。

相关问题 更多 >