python – 为什么不是“numpy.any”懒惰(短路)
发布时间:2020-12-20 12:13:14 所属栏目:Python 来源:网络整理
导读:我不明白为什么还没有进行如此基本的优化: In [1]: %timeit np.ones(10**6).any()100 loops,best of 3: 7.32 ms per loopIn [2]: %timeit np.ones(10**7).any()10 loops,best of 3: 59.7 ms per loop 即使结论是第一项的证据,也扫描整个阵列. 解决方法 这是
我不明白为什么还没有进行如此基本的优化:
In [1]: %timeit np.ones(10**6).any() 100 loops,best of 3: 7.32 ms per loop In [2]: %timeit np.ones(10**7).any() 10 loops,best of 3: 59.7 ms per loop 即使结论是第一项的证据,也扫描整个阵列. 解决方法
这是一个不确定的性能回归.
NumPy issue 3446.实际上有
short-circuiting logic,但是对ufunc.reduce机器的改变在短路逻辑周围引入了一个不必要的基于块的外环,而外环不知道如何短路.您可以看到有关分块机械
here的一些解释.
尽管如此,即使没有回归,短路效应也不会出现在你的测试中.首先,你正在为数组创建计时,其次,我不认为他们曾经为任何输入dtype输入短路逻辑而是布尔.从讨论中,它听起来像numpy背后的ufunc减少机制的细节.任何人都会这么难. 讨论确实提出了一个令人惊讶的观点,即argmin和argmax方法似乎是布尔输入的短路. A quick test显示,从NumPy 1.12开始(不是最新版本,但目前在Ideone上的版本),x [x.argmax()]短路,并且它超过x.any()和x.max()无论输入是小还是大,无论短路是否得到回报,一维布尔输入.奇怪的! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 线程可以切换CPU吗?
- Python的CURL PycURL库的简单示例
- OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
- flask:wsgi-middleware vs before_和after_request()
- python – 调用方法和访问属性之间的区别
- python:用户站点中的包不覆盖ubuntu上的dist-packages
- python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
- Python中super()函数简介及用法分享
- 在python中删除多个列表中的几个项目的最有效方法?
- python – 可以开箱即用接收多部分/混合POST吗?