LRP*_*LRP 7 python numpy long-integer
假设我有一个赋值为'long'的变量
x = 40*2*10**30
Run Code Online (Sandbox Code Playgroud)
如果我然后尝试使用numpy(导入为np)获取此变量的日志:
np.log10(x)
Run Code Online (Sandbox Code Playgroud)
我遇到属性错误:
'long'对象没有属性'log10'.
为了解决这个问题,我可以将变量设置为float并且它可以正常工作或使用'math'包:
math.log10(x)
np.log10(float(x))
Run Code Online (Sandbox Code Playgroud)
我的问题是:math.log10和np.log10有何不同,为什么没有设置np来处理'long'类型?
问题是numpy是用C编写的,它没有一个数据类型可以处理与常规python int类一样大的数字.如果你去这里:http://docs.scipy.org/doc/numpy/user/basics.types.html 它解释了numpy中允许的不同数据类型.特别注意int64 dtype,该类型中允许的最大数字远小于您输入的整数.但是,float64(相当于C中的double)最多可以处理11位指数,这就是为什么当你转换为float时没有溢出错误.
| 归档时间: |
|
| 查看次数: |
1339 次 |
| 最近记录: |