本文目錄一覽:
優化Python編程的4個妙招
1. Pandas.apply() – 特徵工程瑰寶
Pandas 庫已經非常優化了,但是大部分人都沒有發揮它的最大作用。想想它一般會用於數據科學項目中的哪些地方。一般首先能想到的就是特徵工程,即用已有特徵創造新特徵。其中最高效的方法之一就是Pandas.apply(),即Pandas中的apply函數。
在Pandas.apply()中,可以傳遞用戶定義功能並將其應用到Pandas Series的所有數據點中。這個函數是Pandas庫最好的擴展功能之一,它能根據所需條件分隔數據。之後便能將其有效應用到數據處理任務中。
2. Pandas.DataFrame.loc – Python數據操作絕妙技巧
所有和數據處理打交道的數據科學家(差不多所有人了!)都應該學會這個方法。
很多時候,數據科學家需要根據一些條件更新數據集中某列的某些值。Pandas.DataFrame.loc就是此類問題最優的解決方法。
3. Python函數向量化
另一種解決緩慢循環的方法就是將函數向量化。這意味著新建函數會應用於輸入列表,並返回結果數組。在Python中使用向量化能至少迭代兩次,從而加速計算。
事實上,這樣不僅能加速代碼運算,還能讓代碼更加簡潔清晰。
4. Python多重處理
多重處理能使系統同時支持一個以上的處理器。
此處將數據處理分成多個任務,讓它們各自獨立運行。處理龐大的數據集時,即使是apply函數也顯得有些遲緩。
關於優化Python編程的4個妙招,青藤小編就和您分享到這裡了。如果您對python編程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於python編程的技巧及素材等內容,可以點擊本站的其他文章進行學習。
Python元組常用操作小技巧
所以這篇文章,我們先來回顧和總結Python數據結構里常用操作。Python中常見的數據結構可以統稱為容器(container)。序列(如列表和元組)、映射(如字典)以及集合(set)是三類主要的容器。而扁平序列如str、bytes、bytearray、memoryview 和 array.array等不在這篇文章的討論範圍內。
在此,我們先從元組開始說起。
元組區別於列表的顯著特徵之一就是它不能被修改,但其另外一個作用就是 用於沒有欄位名的記錄 [1] 。因為後者經常被忽略,我們先來看看元組作為記錄的作用。
使用括弧就可以定義一個元組。元組中的每個元素都存放了記錄中一個欄位的數據,外加這個欄位的位置。正是這個位置信息給數據賦予了意義。下面的例子中,元組就被當作記錄加以利用:
輸出為:
上述for循環中的操作提取了元組中的元素,也叫作拆包(unpacking)。平行賦值是對元組拆包很好的應用,示例如下:
還有一個經典而優雅的應用是交換變數的值:
用 * 運算符把一個可迭代對象拆開作為函數的參數,例如Python的內置函數pmod接收兩個數字類型的參數,返回商和餘數。以下範例將使用 * 將元組傳入函數。
輸出為:
有些函數有多個返回值,將其賦給一個變數時,變數類型即是元組:
輸出為:
zip是Python的內置函數,能夠接收兩個或多個序列,並組成一個元組列表,在Python3中會返回一個迭代器,如下所示:
輸出為:
元組當然也支持一些常規操作,如對於元組 a = (1, ‘y’, 5, 5, ‘x’) :
上述內容不僅涵蓋了元組的基本操作,同時也結合了實際工作中常搭配使用的其他函數、運算符等。在回顧這些知識時主要參考了兩本經典的Python編程書籍:《流暢的Python》和《像計算機科學家一樣思考Python》,有興趣的朋友可以深入閱讀!
希望這篇文章對你有幫助,下回將總結Python列表的使用技巧。
[1]《流暢的Python》:
對於Python 的科學計算有哪些提高運算速度的技
一:學會正確使用numpy scipy。 numpy scipy寫好的絕不自己寫,比如矩陣運算等操作,pylab的實現還算不錯。各種函數都有,盡量使用他們可以避免初學者大部分的速度不足問題。因為這些函數大部分都是預編譯好的。
根據我幾年前的測試,python的矩陣運算速度並不慢,(因為你運行的是動態鏈接庫裡面的函數而不是腳本)比mathematica快,和matlab持平。
大部分新手不擅長看文檔啥都自己造輪子是不好的。當然老手把效率寫的比開源庫高也不算啥新聞,畢竟有對特定程序的優化
二:減少for的使用,多使用向量化函數,np.vectorlize可以把函數變成對數組逐元素的操作,比for效率高几個華萊士。
三:對內存友好,操作大矩陣的時候減少會引起整矩陣對此copy的操作
四:系統最慢的大部分時候是io,包括上面說的內存操作和頻繁的讀入讀出以及debug輸出。避免他們,在需要實時處理的時候引入類似於gpu的pipeline管線機制或者使用靈活的多線程編程可以起到奇效。
五:matplotlib的繪圖效率並不高明,在使用交互繪圖(plt.ion)的時候減少不必要的刷新率。
如何用python進行科學計算
你可以用 NumPy 做很多有趣的事情。
NumPy 是一個運行速度非常快的數學庫,主要用於數組計算。它可以讓你在 Python 中使用向量和數學矩陣,以及許多用 C 語言實現的底層函數,你還可以體驗到從未在原生 Python 上體驗過的運行速度。
NumPy 是 Python 在科學計算領域取得成功的關鍵之一,如果你想通過 Python 學習數據科學或者機器學習,就必須學習 NumPy。我認為 NumPy 的功能很強大,而且入門也不難。
python能做什麼科學計算
python做科學計算的特點:1. 科學庫很全。(推薦學習:Python視頻教程)
科學庫:numpy,scipy。作圖:matplotpb。並行:mpi4py。調試:pdb。
2. 效率高。
如果你能學好numpy(array特性,f2py),那麼你代碼執行效率不會比fortran,C差太多。但如果你用不好array,那樣寫出來的程序效率就只能呵呵了。所以入門後,請一定花足夠多的時間去了解numpy的array類。
3. 易於調試。
pdb是我見過最好的調試工具,沒有之一。直接在程序斷點處給你一個截面,這隻有文本解釋語言才能辦到。毫不誇張的說,你用python開發程序只要fortran的1/10時間。
4. 其他。
它豐富而且統一,不像C++的庫那麼雜(好比pnux的各種發行版),python學好numpy就可以做科學計算了。python的第三方庫很全,但是不雜。python基於類的語言特性讓它比起fortran等更加容易規模化開發。
數值分析中,龍格-庫塔法(Runge-Kutta methods)是用於非線性常微分方程的解的重要的一類隱式或顯式迭代法。這些技術由數學家卡爾·龍格和馬丁·威爾海姆·庫塔於1900年左右發明。
龍格-庫塔(Runge-Kutta)方法是一種在工程上應用廣泛的高精度單步演算法,其中包括著名的歐拉法,用於數值求解微分方程。由於此演算法精度高,採取措施對誤差進行抑制,所以其實現原理也較複雜。
高斯積分是在概率論和連續傅里葉變換等的統一化等計算中有廣泛的應用。在誤差函數的定義中它也出現。雖然誤差函數沒有初等函數,但是高斯積分可以通過微積分學的手段解析求解。高斯積分(Gaussian integral),有時也被稱為概率積分,是高斯函數的積分。它是依德國數學家兼物理學家卡爾·弗里德里希·高斯之姓氏所命名。
洛倫茨吸引子及其導出的方程組是由愛德華·諾頓·洛倫茨於1963年發表,最初是發表在《大氣科學雜誌》(Journal of the Atmospheric Sciences)雜誌的論文《Deterministic Nonperiodic Flow》中提出的,是由大氣方程中出現的對流卷方程簡化得到的。
這一洛倫茨模型不只對非線性數學有重要性,對於氣候和天氣預報來說也有著重要的含義。行星和恆星大氣可能會表現出多種不同的准周期狀態,這些准周期狀態雖然是完全確定的,但卻容易發生突變,看起來似乎是隨機變化的,而模型對此現象有明確的表述。
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python能做什麼科學計算的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/238648.html