9を超えるパワーを上げることがなぜうまくいかないのか理解できません。単純なようです。たとえば、10の累乗で10を上げようとしていますが、何らかの理由でnumpyが失敗します。何が問題なのですか?
import numpy as np
number = 10
arr = [number]
print(np.power(np.array(arr),number)) # [1410065408]
print([n**number for n in arr]) # [10000000000]
配列を9の累乗で上げると、間違った結果が返されるのはなぜですか?
numpy
暗黙的(型推論から想定)のdtype
ため、np.array
インスタンス化とオーバーフローの副作用で使用されました。
>>> np.power( np.array( arr, dtype = np.int64 ), 10 )
array([10000000000], dtype=int64)
>>> np.power( np.array( arr, dtype = np.int32 ), 10 )
array([-2147483648])
>>> np.power( np.array( arr, dtype = np.int ), 10 )
array([-2147483648])
>>> np.power( np.array( arr ), 10 )
array([-2147483648])
>>> pass; np.array( arr ).dtype
dtype('int32')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加