python - numba 给出正确结果的否定,这是一个错误吗?
问题描述
更新我已经在另一个win10中测试过,但一切都很好。
我将在我的问题电脑中重新安装 anaconda。
update2我已经重新安装了anaconda。numba 一开始有效;但是,问题在一天后又回来了,WTF。
简化示例如下,浪费了一天时间找到:
Python 3.7.2 (default, Jan 2 2019, 17:07:39) [MSC v.1915 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import numba as nb
In [2]: import numpy as np
In [3]: nb.__version__
Out[3]: '0.39.0'
In [4]: np.__version__
Out[4]: '1.15.1'
In [5]: @nb.njit("f8[:](f8[:], f8)")
...: def fast_ema(value: np.ndarray, decay: float) -> np.ndarray:
...: ema = np.empty_like(value)
...: avg = 0.0
...: for i in range(len(value)):
...: avg = avg * decay + value[i] * (1 - decay)
...: ema[i] = avg
...: return ema
...:
In [6]: def slow_ema(value: np.ndarray, decay: float) -> np.ndarray:
...: ema = np.empty_like(value)
...: avg = 0.0
...: for i in range(len(value)):
...: avg = avg * decay + value[i] * (1 - decay)
...: ema[i] = avg
...: return ema
...:
In [7]: value = np.arange(10, dtype='f8')
In [9]: fast_ema(value, 0.5)
Out[9]:
array([ 0. , -0.5 , -1.25 , -2.125 , -3.0625 ,
-4.03125 , -5.015625 , -6.0078125 , -7.00390625, -8.00195312])
In [10]: slow_ema(value, 0.5)
Out[10]:
array([0. , 0.5 , 1.25 , 2.125 , 3.0625 ,
4.03125 , 5.015625 , 6.0078125 , 7.00390625, 8.00195312])
In [11]: Out[9].dtype
Out[11]: dtype('float64')
In [12]: Out[10].dtype
Out[12]: dtype('float64')
解决方案
推荐阅读
- gitlab - 权限被拒绝 - Cpanel - Git 版本控制(私人回购)
- javascript - 谷歌表格脚本缺少一些东西
- python - Python filter() 带有变量的对象列表
- extjs4 - 仅在 Karma 中提供文件的问题
- python - 根据来自不同Dataframe的多个条件删除Dataframe的行
- ruby-on-rails - Is there a way to make a model method in active record?
- javascript - 移动右滑块时,Jquery范围滑块正在改变左滑块的值?
- android - 协调器布局 - 折叠内容交互与回收器视图
- sql - 通过从 With 语句创建的 Select 语句中插入数据来创建表
- flutter - Flutter 导航栏 - 从另一个页面更改选项卡