Python中文
首页
教程
问答
标签
搜索
登录
注册
比较两个numy数组的最快方法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有两个数组:</p> <pre><code>>>> import numpy as np >>> a=np.array([2, 1, 3, 3, 3]) >>> b=np.array([1, 2, 3, 3, 3]) </code></pre> <p>比较这两个数组元素相等的最快方法是什么,而不管顺序如何?在</p> <p><strong>编辑</strong> 我测量了以下函数的执行时间:</p> ^{pr2}$ <p>结果是:</p> <pre><code>>>> import timeit >>> timeit.timeit(compare1,number=1000) 0.0166780948638916 >>> timeit.timeit(compare2,number=1000) 0.016178131103515625 >>> timeit.timeit(compare3,number=1000) 0.008063077926635742 >>> timeit.timeit(compare4,number=1000) 0.03257489204406738 </code></pre> <p>奥迪奥戈席尔瓦的“设置”方法似乎是最快的。在</p> <p>你知道我可以测试的其他方法吗?在</p> <p><strong>编辑2</strong> 上面的运行时并不是比较数组的正确方法,正如user2357112的注释中所解释的那样。在</p> <pre><code>#test.py import numpy as np import numpy.lib.arraysetops as aso #without duplicates N=10000 a=np.arange(N,0,step=-2) b=np.arange(N,0,step=-2) def compare1(): temp=0 for i in a: temp+=len(np.where(b==i)[0]) if temp==len(a): val=True else: val=False return val def compare2(): val=np.all(np.sort(a)==np.sort(b)) return val def compare3(): val=set(a)==set(b) return val def compare4(): val=len(aso.setdiff1d(a,b))==0 return val </code></pre> <p>输出为:</p> <pre><code>>>> from test import * >>> import timeit >>> timeit.timeit(compare1,number=1000) 101.16708397865295 >>> timeit.timeit(compare2,number=1000) 0.09285593032836914 >>> timeit.timeit(compare3,number=1000) 1.425955057144165 >>> timeit.timeit(compare4,number=1000) 0.44780397415161133 </code></pre> <p>现在compare2是最快的。还有什么方法可以比这个更有效吗?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>Numpy作为集合操作的集合。在</p> <pre><code>import numpy as np import numpy.lib.arraysetops as aso a=np.array([2, 1, 3, 3, 3]) b=np.array([1, 2, 3, 3, 3]) print aso.setdiff1d(a, b) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
5 回答
如何添加表示整数的擦边字符串?
5 回答
如何添加要在Bokeh中使用的新font.ttf文件?
7 回答
如何添加要显示的矩阵XY轴编号和XY轴
7 回答
如何添加计数?
7 回答
如何添加计数器函数?
6 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
2 回答
如何添加计数器来跟踪while循环中的月份和年份?
7 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
1 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
3 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
1 回答
如何添加评论拉梅尔亚姆
5 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
9 回答
如何添加谷歌地点自动完成到Flask?
2 回答
如何添加超时、python discord bot
1 回答
如何添加超过1dp的检查
1 回答
如何添加距离方法
3 回答
如何添加跟随游戏的敌人精灵
9 回答
如何添加路径以便python可以找到程序?
10 回答
如何添加身份验证/安全性以使用happybase访问HBase?
9 回答