私は、MATLAB を広範囲に使用した Python 初心者です。MATLABで使用するコードを変換していてlog2
、NumPylog2
関数を使用したところ、このような小さな数に対して予想していたものとは異なる結果が得られました。数値の精度は同じでなければならないので驚きました (つまり、MATLAB double と NumPy float64)。
MATLAB コード
a = log2(64);
--> a=6
ベース Python コード
import math
a = math.log2(64)
--> a = 6.0
NumPy コード
import numpy as np
a = np.log2(64)
--> a = 5.9999999999999991
修正された NumPy コード
import numpy as np
a = np.log(64) / np.log(2)
--> a = 6.0
そのため、ネイティブの NumPylog2
関数は、数値が 2 のべき乗であることを確認しているため、コードがテストに失敗する原因となる結果を返します。期待される結果は正確に 6 であり、ネイティブの Pythonlog2
関数と変更された NumPy コードの両方が、対数の性質。log2
NumPy関数に何か問題がありますか? 今のところネイティブの Python を使用するようにコードを変更しましたlog2
が、答えを知りたかっただけです。