このスレで議論されている話題。

大きな整数をnumpyの関数に渡すと、 AttributeError: ‘int’ object has no attribute のエラーになることがある。

例えば、

>>> import numpy as np
>>> np.log2(2**63)
63.0
>>> np.log2(2**64)
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'int' object has no attribute 'log2'

 

これはnumpy内部のデータ型がuint64からobjectへと変わることで起こっているようだ。

>>> np.array([2**63])
array([9223372036854775808], dtype=uint64)
>>> np.array([2**64])
array([18446744073709551616], dtype=object)

以下のようにすれば回避可能:

>>> np.log2(float(2**64))
64.0
>>> np.log2(2.**64)
64.0
>>> import math
>>> math.log2(2**64)
64.0

 

関連記事

fitbitの睡眠スコアを90弱で安定させる良い睡眠を続ける簡単な方法

m1 ipad pro 12.9 2021のusb-cハブはコレがベスト

Time Machine不要!Macを11.2.3にダウングレードして原神をm1 macbook airでプレイする

MH-Z19CとM5StickCで二酸化炭素濃度モニタリング

【神軽量HMD】Avegant Glyph 改造: 瓶詰堂さんのaltglyphを作った

PC、iPad、Android、switchもドックいらず!あまりに万能なusb-cハブが最強だった

コメント

コメントを返信する

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です