作者:矢量場
鏈接:https://www.zhihu.com/question/30823702/answer/318265889
來源:知乎
著作權歸作者所有脆荷。商業(yè)轉載請聯(lián)系作者獲得授權管宵,非商業(yè)轉載請注明出處。
有幾個原因凛捏。1,底層是C芹缔,部分是Fortran(也挺快的坯癣,你們千萬不要瞧不起fortran,快是真快最欠。)示罗。這些代碼一來快惩猫,二來已經運行幾十年了,錯誤的概率不高蚜点。其實一個看似很簡單的問題轧房,比如e^x用泰勒展開去計算,展到多少項也是有技巧的绍绘。最簡單的方法就是n-1和n相除看大小變化規(guī)律奶镶。但我要告訴你這不是完美的算法。這里頭有一個大坑陪拘。因為float的原因一些個別數據厂镇,一般是一些stop points,會被計算出很詭異的結果藻丢,如果你自己寫的話剪撬。但是numpy不會有。一些比較小的package會出現這種情況悠反。比如說残黑,上次曾經用一個nlp的package算出tf大于1的。這種多半都是float的問題斋否。2梨水,除了用C以外,numpy有自己的一個指令集合茵臭∫叻蹋可以提升運行速度。這個知道的人不多旦委。3奇徒,在R里有一個東西叫向量化編程。速度是直接用內嵌數據結構的100倍左右缨硝。原理類似摩钙。
能習慣用numpy還是盡量用。真正的好東西查辩。寫python能用庫還是用庫胖笛。但是,這里頭當然還有其他的問題宜岛。比如你下載一些庫下載地址不對可能下了野庫长踊,里頭是帶病毒的。所以Linux萍倡,是個好東西身弊,尤其是假如是公司或者學校的Linux(逃)。嗯其他的,說起來就復雜了佑刷。annaconda是個好東西莉擒。
numpy如果有缺點的話酿炸,就是這東西缺少一個類似openCV那樣十分簡潔的工作手冊瘫絮。openCV的手冊極其良心。有高中時代的那種填硕,五塊錢一本的全是公式的數學物理小書的感覺麦萤。實在是太好了,我每次用numpy很少查stackoverflow或者github扁眯。pandas有一本書叫利用python做數據分析壮莹。這本書也非常好。就是pandas的作者所寫姻檀。當然numpy功能強大很多命满。numpy的官方文檔實在是太多了(細節(jié)很好,但是不容易讓你有一個好的big-picture)绣版。不過遇到不會的去search是很好的胶台。