NumPy和MATLAB哪個強大,Numpy能替代MATLAB嗎?

本科在讀,聽說Matlab在實際運用中作用不大。。


matlab強大,無論組件豐富程度、計算速度、混合編程能力都完爆numpy,況且numpy只是包含最基本的計算功能,你好歹把numpy、scipy、sympy、matplotlib、pandas、traitsui……全放在一起才勉強有一拼之力。

然而如果把PyPI里眾多包全算上,python及各種科學計算包合起來,可以覆蓋到matlab能做的所有工作。


NumPy只是Py眾多科學計算數值處理的庫之一啊,拿它來跟Matlab比它會覺得壓力好大。如果一定要比的話,請把PyPI里的包全帶上~

Matlab本身具有強大的數值計算能力,但這並不是它所有的功能,更加不是在實際應用中最大的優勢。

從一個笨且懶的人的角度,Matlab在實際應用中有兩個巨大的優勢。第一,圖形化界面、強大的函數庫、豐富的API和完備的文檔,當年第一次參加數模是被臨時拉去的,一小時入門Matlab,mex從Github上扒下來的C程序,100行寫完數據處理和圖形化代碼,缺一樣就跪了;第二,對各個工程領域完備的工具箱和相關文檔的支持,Matlab的工具箱包括但不限於數學統計(Statistics Toolbox, Symbolic Math Toolbox...)、優化(Optimization Toolbox,Global Optimization Toolbox...)、信號處理(Signal Processing Toolbox,DSP System Toolbox...)、生物計算(Bioinformatics Toolbox)...去年一個小學妹上DSP,找我幫忙寫作業的代碼,我是一個學計算機的啊,DSP全稱是什麼我到現在都搞不清楚啊,但是面對溫柔可人的小學妹我怎麼好意思拒絕,只好拿著作業的步驟說明,對著文檔,居然寫出來了,到現在都不敢問那次作業的成績OTZ。這兩點使得:一個不具有Matlab編程基礎的人,可以快速上手Matlab,並能通過調用現有函數、混合編程等方式,加速完成功能要求;一個只有Matlab編程基礎的人,能通過閱讀文檔,使用功能強大的工具箱,協助其他工程專業的同事完成任務。

說Matlab在實際運用中作用不大的,嗯,一定和我一樣買不起Matlab。

(我用的Matlab是學校買噠,支持正版,人人有責。)


題目應該改成「python所有的科學計算相關的庫與MATLAB哪個更強大?」,單單numpy與MATLAB對比是不是壓力太大了點啊?!

Numpy相當於與MATLAB的矩陣運算部分,和整個MATLAB相差太遠。

就算只是比較矩陣運算,語法上MATLAB佔據了很大的優勢,因為MATLAB的語法就是為了方便矩陣運算而設計的。

做研究的話,「numpy.scipy.matplotlib.pandas全家桶」差不多能代替「沒有任何工具包的matlab,不包括simulink」了。

但是「沒有任何工具包的matlab,不包括simulink」還包括:

1 GUI

2 生成App

3 單元測試框架

4 與其他語言(C/C++,python,fortran,Java, lNET, C#等)混合編程

MATLAB相比Python的最大的優勢是它豐富的文檔,很多python的函數的文件只有一句話,連個例子都沒有。


Python, numpy 等等的好處是價格便宜,一般情況下不用花錢。論軟體包全面強大易用還是Matlab,單說速度的話倒不一定,numpy 某些運算還真比Matlab 快。


不懂simulink的就不要談論matlab了,問問電氣工程師們,自動化工程師,發動機工程師們都怎麼用matlab的。


實際應用上,matlab 的問題主要是環境依賴(於是自動執行不如 python 方便)和他喵的要錢和和速度太慢和程序員很不喜歡

但是這並不代表對於本科生不需要,很多時候,你的老師用 matlab 上課

況且多學一個包/語言有什麼難的....總比我當年因為審美扭曲的原因用 perl 好


別撕了,這兩貨可以互相調用


IOS和安卓哪個更強大?恐怕答案在於開發者和使用者,而不在軟體本身吧。

WP:卧槽!快看看我快看看我我在這裡!


已經從python和matlab比變成 import numpy 和matlab比了么。。你們要瘋啊


我實驗室的人這麼說:沒用Python之前覺得MATLAB賣的太貴了。用了Python後覺得MATLAB賣的太便宜了。


不行,不能取代。

Numpy 只是完成了mat lab 一個子集的功能,並且性能並沒有達到100%


在學校的同志大多用matlab吧,除了大家提到的專業性強、文檔豐富外,我覺得最重要的是其完備性、便捷性,還有用戶慣性,學術界的人都用習慣了,大家都用你不用怎麼交流?

但是對工業界的人不一樣,程序員最喜歡折騰,兩者都用過好些年,客觀地說現在python用於科學計算已經越來越完備了,而且站在實際應用開發的角度看Python比matlab更強,這一點估計搞學術的同志是理解不了的~~~


只拿python的一個包怎麼能與matlab比呢?matlab實踐中用得並不少。你發現用numpy的更多,是因為matlab太貴。


  • Matlab

Matlab的強大之處在於你能想到的基本常用數學,物理工具都已經集成,並且不坑。

優點就是,輕鬆寫一段代碼拼拼湊湊抄抄改改最後算出個結果,最後貼論文,作業,報告什麼的上面,搞定。

其目的是為了計算出結果,一旦得到結果,這段代碼的價值就無限接近於零了(大多數情況下寫matlab也不會考慮復用和結構)。

你可能會說Matlab效率太低,但是寫一段代碼跑一次就夠了(運行成功的那次),花一秒和一個小時計算出結果,相對來說,沒有那麼強烈的差異。畢竟不是放在伺服器上承載數千萬訪問。

Matlab幾乎不會用於程序員編寫一個軟體,庫,模塊,框架等,這不是它的定位,它的定位更多面向非計算機行業的工程師,讓他們也能輕鬆的解決計算任務,數據可視化等專業情況複雜,定製程度較高的環境。

  • Python

Python的各類數學工具庫,也很強大,但總體來說,體驗稍遜於Matlab。

畢竟需要自己安裝,庫A可能繪圖很不錯,但是缺少物理相關的函數,所以要想辦法和庫B結合起來用,同時沒有Matlab那麼強大的IDE環境,這對程序員來說沒什麼,對其他專業工程師但需要解決計算任務的情況,就是門檻

Python效率也不算高,但可用於生產生產工具(沒打錯,兩個「生產」)

比如自己研究CV, 改進了了某個圖像演算法,可以先驗,完了如果覺得有實用價值,用Python編寫成一個包,寫篇博客,掛在論壇。其他人可以直接拿去用,然後集成在他們自己的程序里。

總之,兩者都不是什麼需要花費巨大精力攻堅才能搞定的玩意兒,也不是非A即B的關係,有必要就掌握,只是別明知道適合B做的事,非要拿A去解決。


以下是Numpy自己對自己的定義:

NumPy – A Replacement for MatLab

NumPy is often used along with packages like SciPy (Scientific Python) andMat?plotlib (plotting library). This combination is widely used as a replacement for MatLab, a popular platform for technical computing. However, Python alternative to MatLab is now seen as a more modern and complete programming language.

也就是說,Numpy ,SciPy,和Matplotlib等庫的結合使用可以用來替代Matlab。

單單Numpy一個,有點孤單啊。

強行植入我的Numpy教程:

Numpy (1) --- 從入門到放棄

Matplot教程:

Matplotlib(1)---從入門到放棄

敬請期待。


R 和python的運算速度跟matlab比起來就是渣。感覺數據量大的時候,在r里彷彿世界變慢了


numpy 性能還是稍有不如matlab

numpy 的語法某些情況比matlab精簡。最簡單例子,兩個array每個element相乘返回,matlab 要 a = a.*b; numpy 只需要 a *= b

numpy 很多時候都需要 np.xxxx np.xxxx 比較繁瑣


我兩個都有用過......numpy是python的一個拓展包,matlab和numpy是不能做對比的。我覺得你想對比的是python和matlab,具體哪個好要看你偏向哪個方向,如果偏向開發軟體的話python更好,偏向學術的話matlab更好。


工作之後,不好意思用盜版,又略會python,只能走起了...


不能。

運算起來matlab快很多。


難道沒人用sagemath么..簡單易上手啊!


贊 Matlab 的無非是因為在中國用盜版不需要花錢罷了。你自己開個創業公司買正版的 Matlab 用試試看?


推薦閱讀:

關於python遞歸的邏輯困惑?
Python出現ValueError: need more than 1 value to unpack 的原因是什麼?
有哪些應用場景適合用python的gevent來完成?
Python為什麼代碼縮進不同,輸出結果不同?
為什麼 Python 不是 lexical scoping?

TAG:Python | 編程 | MATLAB | numpy |