NumPyでfloat128を標準のfloat配列として設定できますか?質問する

NumPyでfloat128を標準のfloat配列として設定できますか?質問する

数値プログラムに問題があり、精度の問題 (つまり、丸め誤差) であるかどうかが気になっています。float128コードを調べたり、dtype='float128'あちこちに入力したりせずに、プログラム内のすべての float 配列を配列にすばやく変更する方法はありますか。配列はすべて float64 ですが、明示的に と書いたことがないdtype='float64'ので、このデフォルトの動作を変更する方法があることを期待していました。

ベストアンサー1

これを実現するために変更できる中心的な「構成」はないと思います。実行できるいくつかのオプションは次のとおりです。

  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し、カスタム コンストラクターのみを使用して新しい配列を作成します。

おすすめ記事