numpyにおける"RuntimeWarning: divide by zero encountered in log"の対処方法


Python 3.10.7 で下記のコードを動かしたところ警告が表示されます。

**実行時の警告:**

[code]

    numpy_test.py:5: RuntimeWarning: divide by zero encountered in log
      np_ret = np.where(np_val <= 0.5, np.sqrt(np_val), np.log(np_val))
    [0.]
    
[/code]

`print(ret_val)` の表示は `[0.]` ですので、`np_func()` は `np.sqrt(0)` の値を返していると考えています。  
その為、おそらく `np_func()` に `np.zeros(1)` が渡された際に、条件を満たす `np.sqrt(np_val)`
だけでなく、条件を満たさない `np.log(np_val)` も計算することで警告が出ているのだと思うのですが、認識はあっていますでしょうか？

できれば、今回のような実際には使用されない計算における警告は無視したいのですが、何か方法はありますでしょうか？

**ソースコード:**

[code]

    import numpy as np
    
    
    def np_func(np_val):
        np_ret = np.where(np_val <= 0.5, np.sqrt(np_val), np.log(np_val))
        return np_ret
    
    
    def test_numpy():
        np_val = np.zeros(1)
        ret_val = np_func(np_val)
        print(ret_val)
    
    
    if __name__ == "__main__":
        test_numpy()
    
[/code]




一時的に無視する方法

[code]

    def np_func(np_val):
        with np.errstate(divide='ignore'):
            np_ret = np.where(np_val <= 0.5, np.sqrt(np_val), np.log(np_val))
        return np_ret
    
[/code]

