多重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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM