これはどこかに文書化されていますか?なぜそんなに劇的な違いがあるのでしょうか?
# Python 3.2
# numpy 1.6.2 using Intel's Math Kernel Library
>>> import numpy as np
>>> x = np.float64(-0.2)
>>> x ** 0.8
__main__:1: RuntimeWarning: invalid value encountered in double_scalars
nan
>>> x = -0.2 # note: `np.float` is same built-in `float`
>>> x ** 0.8
(-0.2232449487530631+0.16219694943147778j)
これによるとnp.float64
、ビルトインは。float
を除いて同一であるため、これは特に混乱を招き__repr__
ます。
np
からの警告が場合によってはどのように役立つかがわかります(特に、で無効または有効にできるためnp.seterr
)。ただし、問題は、戻り値がnan
組み込みによって提供される複素数値ではないことです。したがって、これは、一部の計算に使用を開始するときにコードを壊し、numpy
その戻り値を組み込みのfloatに明示的に変換しません。