譯者:飛龍
原文:what is numpy?numpy是python中用於科學計算的基礎包。它是乙個python庫,提供多維陣列物件,各種派生的物件(如掩碼陣列和矩陣),以及陣列快速操作的各種各樣的例程,包括數學、邏輯、圖形操作,排序、選擇、i/o、離散傅利葉變換、基本線性代數、基本統計操作,隨機模擬以及其他。
numpy包的核心是ndarray物件。它封裝了均勻資料型別的n維陣列,帶有一些在編譯過的**中執行的操作。numpy陣列和python標準列表有一些重要的差異:
序列大小和速度在科學計算中尤為重要。例如考慮兩個長度相同的列表中每個元素相乘的情況。如果資料被儲存在兩個python列表 a 和 b 中,我們可以這樣遍歷每個元素:
c =
for i in range(len(a)):
這就產生了正確的答案,但如果 a 和 b 都含有數以百萬計的數字,我們將為python的低效迴圈付出代價。我們可以這樣以c語言編寫**來完成同樣的任務(為清楚起見我們忽略變數宣告和初始化、記憶體分配等):
for (i = 0; i < rows; i++):這節省了所有涉及解釋python**和操作python物件的開銷,但沒有了使用python編碼的優勢。此外,編碼所需的工作量隨資料維數的增加而增加。例如對於乙個二維陣列,c**(像上面一樣簡寫)會擴充套件為:
for (i = 0; i < rows; i++):
}
numpy綜合了兩種情況的優點:元素級別的操作是ndarray的「預設模式」,而它又通過執行預編譯的c**來加速。在numpy中:
c = a * b
的行為像之前的例子一樣,幾近於c語言的速度,但是**正如我們期望中的那樣,就像標準的python一樣簡潔。實際上,numpy的風格還能更簡潔!最後這個例子說明了numpy的兩個特性:向量化(vectorization)和廣播(broadcasting),它們是numpy強大之處的基礎。
向量化用於描述任何缺失的顯式迴圈、索引及其它,在**這些事情是即時發生的,當然,是在「幕後」(預編譯的c**中)優化。向量化編碼的優點很多,比如:
廣播是描述隱式的元素級操作的術語;一般來說,numpy中所有操作,並不只是算術運算,還有邏輯運算,位運算,函式運算等,以這種隱式的元素層面的方式執行,就是廣播。此外,在上面的例子中,a 和 b 可以是相同形狀的多維陣列,或者乙個標量和乙個陣列;甚至可以是不同的形狀的2個陣列,假設較小的陣列可以以產生明確廣播的方式,擴充套件為較大陣列的尺寸。詳細規則見 numpy.doc.broadcasting。
numpy完全支援ndarray的物件導向。例如,ndarray是乙個類,擁有許多方法和屬性。它的許多方法複製了numpy最外層命名空間的函式,讓程式設計師完全自由決定**寫成哪個正規化,以及哪個正規化更適合當前的任務。
原文:installing numpy大多數情況下,在系統上安裝numpy的最好辦法是使用為你的作業系統預編譯的包。
一些可選的連線請見 。
有關原始碼包構建的說明,請見從原始碼中構建。這些資訊主要用於高階使用者。
Numpy 中文使用者指南 3 2 建立陣列
原文 array creation 譯者 飛龍 另見 陣列建立例程 陣列建立的一般機制有五種 本節不會涉及複製和連線等擴充套件和轉換現有陣列的方法,也不會涉及建立物件陣列和結構化陣列。這些會在它們自己的章節中講述。通常,python中排列為陣列結構的數值資料可以通過array 函式來轉換成陣列,典型...
Ansible入門 中文指南學習(1)
ansible中文指南 as bruce ansible all m ping u bruce as bruce,sudoing to root ansible all m ping u bruce sudo as bruce,sudoing to batman ansible all m ping...
Dos使用者學Unix指南 1
第零節 介紹 0.1 linux 就是你要的嗎?這個世界上並不存在著 最好的電腦 或是 最棒的 os 作業系統 這完全視你的 需求而定.比方說,我很不喜歡 mac 得罪了 它的確很容易使用,但我還是喜歡 pc 幫我完成某些事.試試在 mac 上做和 dir s w lst 一樣的事 至今,對許多人 ...