import numpy as np
import math
print -1/2*np.log2(1/2)-1/2*np.log2(1/2)
プリントnan
numpyに問題がありますか?私はあなたが説明でき
を結果として見ることができませんか?
import numpy as np
import math
print -1/2*np.log2(1/2)-1/2*np.log2(1/2)
プリントnan
numpyに問題がありますか?私はあなたが説明でき
を結果として見ることができませんか?
変更Pythonのバージョンが同様に 最初のpython 2.7で、第二は、これはあなたの条件を浮動することにより回避することができるのpython 3.5
>>> import numpy as np
>>> print(-1/2*np.log2(1/2)-1/2*np.log2(1/2))
nan
>>> print(-1/2*np.log2(1/2)-1/2*np.log2(1/2))
1.0
詳しい情報は、要求された...今
>>> import numpy as np
>>> print(-1/2*np.log2(1/2)-1/2*np.log2(1/2))
__main__:1: RuntimeWarning: divide by zero encountered in log2
__main__:1: RuntimeWarning: invalid value encountered in double_scalars
nan
です...最も簡単な方法は、直接行うことです...
>>> import numpy as np
>>> print(-1/2.*np.log2(1/2.)-1/2.*np.log2(1/2.))
1.0
同じnumpyのバージョン、ちょうどPythonが2.7から3.5の間で変更されました
ints間のpython 2.xの分割はユークリッドの除算であるので、1/2は0、np.log(0)はnanを返します。パイソン2に対し
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
>>> 1/2
0.5
:
Python 2.7.12 |Continuum Analytics, Inc.| (default, Jul 2 2016, 17:42:40)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
>>> 1/2
0
>>> 1./2
0.5
>>> from __future__ import division
>>> 1/2
0.5
Iは、Python 2の通常の分割を得るために二つの方法が含まれている:(1の代わりに、1)フロートを使ってPython 3を使用
または__futureからの除算をインポートする__
はい: 'RuntimeWarning:log2でゼロで除算されます。 RuntimeWarning:double_scalarsで無効な値が発生しました。 ' – davedwards
' 1/2'を '.5'に置き換えてみましょう:-.5 * np.log2(.5) - 。5 * np.log2(.5)' - > '1.0 ' – davedwards