最後の数値は a long
(任意精度の整数に対する Python の名前) であり、NumPy では明らかに処理できません。
>>> type(100000000000000000000)
<type 'long'>
>>> type(np.int(100000000000000000000))
<type 'long'>
>>> np.int64(100000000000000000000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: Python int too large to convert to C long
これAttributeError
は、NumPy が、処理方法がわからない型を見て、デフォルトsqrt
でオブジェクトのメソッドを呼び出すために発生します。しかし、それは存在しません。だから、それnumpy.sqrt
が欠けているわけではありませんがlong.sqrt
.
対照的に、math.sqrt
について知っていlong
ます。NumPy で非常に大きな数を処理する場合は、可能な限り float を使用してください。
EDIT : わかりました、あなたは Python 3 を使用しています。そのバージョンではint
との区別long
はなくなりましたが、NumPy は、使用PyLongObject
して C に正常に変換できるa とできない a の違いにまだ敏感です。long
PyLong_AsLong