多重for循环如何提速

 思知群里面的一个问题

NK(659324338) 2019/8/1 10:44:51
有大神对numpy库熟悉的没
请教一个问题
NK(659324338) 2019/8/1 10:45:46

这种程序是否可以转化为矩阵运算而不使用双重for循环
NK(659324338) 2019/8/1 10:48:05

像这种程序效率太低了
彭震宇-CPDI(1679468600) 2019/8/1 10:55:03
没事 你用numba
可以自动优化循环过程
快得起飞
暨大-入门(1242441055) 2019/8/1 10:56:52
先把content 里面的组合(i,j)生成
死鬼-深圳<diator@qq.com> 2019/8/1 11:07:23
@彭震宇-CPDI numba真的是个神器啊
彭震宇-CPDI(1679468600) 2019/8/1 11:14:49
而且非常方便加个装饰器就能加速特别多
彭震宇-CPDI(1679468600) 2019/8/1 11:15:14
只要程序里循环和数值运算特别多的话

欧皇阿枫(67106362) 2019/8/1 11:18:35
这话问的
天知道啊
我就没下载过python
而且这和你网速相关
彭震宇-CPDI(1679468600) 2019/8/1 11:19:37
我都是直接下anaconda  用它自带的那个python
人工智能网www.aiaor.com<liuvean@qq.com> 2019/8/1 14:48:27

hustxun-华中科技大学(252472925) 2019/8/1 16:59:51
@NK 不知道加速会怎么样,到你这个程序实在是太低效,太多无用运算
NK(659324338) 2019/8/1 17:01:21
这个需要更深层次优化,即便采用numba,好像速度提升不明显
NK(659324338) 2019/8/1 17:02:10
@hustxun-华中科技大学 
不过numba也是一种思路
从语言层面优化程序
但是如果程序写的太烂,语言层面优化还是有限的
NK(659324338) 2019/8/1 17:04:43
https://stackoverflow.com/questions/20574257/constructing-a-co-occurrence-matrix-in-python-pandas#comment30776786_20574460
Stack Overflow上有人给出了好的方案,就是我想要的
全部转换为矩阵操作
hustxun-华中科技大学(252472925) 2019/8/1 17:05:16
反向思路啊,转换为“填表”过程就可以了,准备一个N*N的空表,依次对content中每个line的每个每个元素,通过字典查找它第i行j列,加一就行吧
NK(659324338) 2019/8/1 17:08:34
你说的我也试过,上面那种有提升,但还不是最优
NK(659324338) 2019/8/1 17:10:22

@hustxun-华中科技大学 最优的应该是Stack Overflow上面的回答
目前我看到的最优的是Stack Overflow上的回复
hustxun-华中科技大学(252472925) 2019/8/1 17:14:38
没细看,还没看懂最后一个dot的功能,但是有个K[i,j]+=1,应该是可以的,这个就是填表操作
NK(659324338) 2019/8/1 17:16:14
上面的如果改为Python列表解析式不知道效率如何?
hustxun-华中科技大学(252472925) 2019/8/1 17:17:46
不用太在意这个吧,关键是算法不能太抵消,尽量避免重复操作,太低层的操作优化都得转换为c语言
NK(659324338) 2019/8/1 17:19:13
作为coder,我们应该要有一种朝着完美进军的目标呀
hustxun-华中科技大学(252472925) 2019/8/1 17:20:04

原文地址:https://www.cnblogs.com/www-caiyin-com/p/11286807.html