-
1 # 博杉影視剪輯
-
2 # 機器學習之路
感覺在問這個問題的時候,你可能主要是懷疑Python的效能吧?其實Python很多比較好時的模組都是用c寫的,像numpy是一個常用的Python數值計算的庫,他就是用c實現的。而且,現在電腦的配置也不像十幾年前那麼低了。今年Python依靠人工智慧而掀起了一股浪潮,作為人工智慧產品開發中最受歡迎的程式語言,而人工智慧相關產品的開發,自然也離不開大資料的支撐,所以不用去懷疑Python能不能進行大規模的數值計算。
-
3 # 自可樂
Python 是非常適合做數值計算的,幾乎可以說 Python 是除了老牌的 Fortran、C、C++ 之外最適合做資料科學的計算機語言了。這從近些年 Python 的發展勢頭就能窺見一斑。Python 已經力壓 R 及 Matlab,在資料科學領域風生水起。TIOBE 最新發布的 9 月程式語言排行榜中,Python 憑 4.67% 的增速以 0.26% 的優勢力壓 C++,逆襲成功進入 Top 3。
Python 是一門免費,靈活且強大的開源語言。使用 Python 能減少大量的開發時間,同時提供簡潔易讀的語法。使用 Python 可以容易地進行資料操作、資料分析和視覺化。Python 提供了一整套功能強大的庫,用於科學計算及機器學習相關應用。
Python 做數值計算的基礎是 numpy 庫。numpy 是 Python 中最常用的數值計算庫,提供了一個通用且功能強大的高維陣列結構及大量的科學計算函式(其中相當一部分和 scipy 有交叉),是 Python 中幾乎所有其他科學計算庫的基礎。
Python 在 numpy 的基礎上打造了一個完整的科學計算生態系統,其中最常用的包括:
scipy: 在 numpy 的基礎上提供了科學計算中各種常見問題的解決工具,包括數學物理中的各種特殊函式,數值積分,最佳化,插值,傅立葉變換,線性代數,訊號處理,影象處理,隨機數和機率分佈,統計學等等。sympy: Python 中的符號計算庫,支援符號計算、高精度計算、模式匹配、繪圖、解方程、微積分、組合數學、離散數學、幾何學、機率與統計、物理學等方面的功能,能在很大程度上代替 Mathematica 和 Matlab 的符號計算功能。IPython: 一個 Python 的互動式開發和計算環境,比 Python 自帶的 shell 好用且功能強大得多,支援變數自動補全,自動縮排,支援 bash shell 命令,內建了許多很有用的功能和函式。 IPython notebook 可以將程式碼、影象、註釋、公式和作圖集於一體,已經成為用 Python 做教學、計算、科研的一個重要工具。matplotlb: Python 做科學計算最常用和最重要的畫圖和資料視覺化工具包。pandas: Python 中常用的資料分析包,適合時間序列及金融資料分析。scikit-learn:Python 的機器學習庫。 它具有各種分類,迴歸和聚類演算法,包括支援向量機,隨機森林,梯度增強,k 均值等各類機器學習演算法,可以與 Python 數值和科學計算庫 numpy 和 scipy 互操作。以上是 Python 中較為基礎的數值和科學計算工具,一般來說只適用於在單臺機器上進行計算工作,雖然可以使用多個執行緒或者 joblib 之類的工具進行並行加速(IPython.parallel 模組例外,可以執行在一個由多臺計算機組成的叢集上)。如果要進行更大規模的數值和科學計算,使用並行及分散式計算就很有必要了。Python 也提供了相應的工具來支援大規模的並行分散式計算,可以使用的工具有:
Dask:Dask 是一個用於數值和科學計算的靈活的平行計算庫,它提供了一個最佳化的並行任務排程器和若干並行的資料結構:Dask Array 是一個分散式並行的 numpy 數值,Dask Bag 是一個分散式並行的 Python 序列集合,Dask Dataframe 是一個分散式並行的 Pandas dataframe。另外 Dask-ML 將 scikit-learn 中的機器學習演算法都並行化了,可以處理更大規模的資料運算。
mpi4py:Python 中 MPI (訊息傳遞)庫。mpi4py 庫與 numpy 陣列結合緊密,可以高效地在不同的 MPI 程序包括不同的計算節點之間交換 numpy 陣列資料。可以使用 mpi4py 在 Python 中非常容易地編寫基於 MPI 的平行計算程式,然後在大型計算叢集或者超級計算機上執行。我的個人[簡書專題](https://www.jianshu.com/c/5019bb7bada6)和 [CSDN 部落格專欄](https://blog.csdn.net/column/details/26248.html)中有對用 mpi4py 做平行計算的專門介紹並提供了大量的程式例項。有需要或者感興趣的可以瞭解下。IPython.parallel:支援多種形式的平行計算,包括單程式多資料流(SPMD)並行,多程式多資料流(MPMD)並行,MPI 並行,資料並行等,可以非常容易地將計算任務部署到一個叢集上並行地執行。pySpark:針對 Spark 的 Python API,可以使用它在 Python 中進行大資料分析和大規模的機器學習應用。可能不是很適合大規模高效能數值和科學計算。大規模的數值和科學計算也經常涉及大量的資料 I/O 操作,I/O 操作往往是高效能計算的瓶頸所在,MPI 的 ROMIO 庫提供了高效的並行 I/O 支援,可以使用 mpi4py 進行並行 I/O 操作,或者使用支援並行 I/O 的科學資料儲存檔案格式,如 HDF5 (Hierarchical Data Format)。Python 中的 h5py 和 PyTable 提供了對 HDF5 檔案資料操作的支援,Pandas 中也有相應的函式可以讀取 HDF5 檔案中的資料或者將資料儲存到 HDF5 檔案中。
題主是MATLAB的重度使用者,博士期間用MATLAB編寫了一整套計算固體力學的FEA工具箱,在此基礎上實現了拓撲最佳化功能。博士期間所發表的全部論文都是基於該工具箱完成的。目前準備在空閒時間將整個工具箱用Python重寫一遍,主要是考慮到Python的影象渲染功能比MATLAB更強大一些,尤其是三維視覺化方面。
回覆列表
numpy, pandas肯定適合你,Python在人工智慧上有著卓越的表現,Google開源了Tensorflow深度學習系統,在資料的處理和影象的處理上都有著卓越的表現,題主也可去研究研究。