python數值計算擴展——NumPy
一、NumPy簡介
NumPy系統是Python的一種開源的數值計算擴展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表(nested list structure)結構要高效的多(該結構也可以用來表示矩陣(matrix))。
以下為官方英文介紹:
NumPy is the fundamental package for scientific computing with Python. It contains among other things:
(1)a powerful N-dimensional array object
(2)sophisticated (broadcasting) functions
(3)tools for integrating C/C++ and Fortran code
(4)useful linear algebra, Fourier transform, and random number capabilities
Besides its obvious scientific uses, NumPy can also be used as an efficient multi-dimensional container of generic data. Arbitrary data-types can be defined. This allows NumPy to seamlessly and speedily integrate with a wide variety of databases.
二、python環境注意事項
目前python3使用也比較多,有的同學可能安裝了兩個版本,包括python2,Mac 在終端中輸入python命令後,輸出的信息還是Python 2.7。
如何讓系統默認使用python3呢?按照以下步驟設置即可:
(1) 終端輸入:open ~/.bash_profile,打開.bash_profile文件。
(2)修改.bash_profile文件內容 ,添加如下兩行PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:$"
export PATH
(4)重新生效.bash_profile文件
source .bash_profile
經過以上四步,終端輸入phtyon,出現以下內容即修改成功。
三、NumPy安裝
配置好python環境後,在命令行輸入:from numpy import*,如果提示以下錯誤,我們需要手動安裝NumPy:
(1)pip安裝
我們使用pip安裝NumPy,前提是已經安裝pip,mac默認是沒有安裝pip的。
如果用的是macOS自帶的python2.7,直接終端輸入:sudo easy_install pip,安裝。
如果使用的Python3,終端輸入:curlhttps://bootstrap.pypa.io/get-pip.pypython3。
安裝完成後,查看pip的版本和路徑。由於我分別安裝了python2和3,所以也分別安裝了pip的不同版本,如下:
注意:
1)使用pip install XXX
新安裝的庫會放在這個目錄下面
python2.7/site-packages
2)使用pip3 install XXX
新安裝的庫會放在這個目錄下面
python3.6/site-packages
在使用python3執行程序,那麼就不能import python2.7/site-packages中的庫。
(2)安裝NumPy
終端輸入:sudo pip3 install -U numpy
安裝成功輸出以下log:
四、NumPy使用
(1)基礎
NumPy的主要對象是同類型的多維數組。它是一張表,所有元素(通常是數字)的類型都相同,並通過正整數元組索引。在NumPy中,維度稱為軸。軸的數目為rank。
例如,3D空間中的點的坐標[1, 2, 1]是rank為1的數組,因為它具有一個軸。該軸的長度為3。在下圖所示的示例中,數組的rank為2(它是2維的)。第一維度(軸)的長度為2,第二維度的長度為3。
[[ 1., 0., 0.],
[ 0., 1., 2.]]
NumPy的數組的類稱為ndarray。別名為array。請注意,numpy.array與標準Python庫的類array.array不同,後者僅處理一維數組並提供較少的功能。ndarray對象的更重要的屬性是:
ndarray.ndim
數組的軸(維度)的個數。在Python世界中,維度的數量被稱為rank。
ndarray.shape
數組的維度。這是一個整數的元組,表示每個維度中數組的大小。對於具有n行和m列的矩陣,shape將是(n,m)。因此,shape元組的長度就是rank或維度的個數ndim。
ndarray.size
數組元素的總數。這等於shape的元素的乘積。
ndarray.dtype
描述數組中元素類型的對象。可以使用標準Python類型創建或指定dtype。另外NumPy提供了自己的類型。例如numpy.int32、numpy.int16和numpy.float64。
ndarray.itemsize
數組中每個元素的位元組大小。例如,元素為float64類型的數組的itemsize為8(=64/8),而complex32類型的數組的comitemsize為4(=32/8)。它等於ndarray.dtype.itemsize。
ndarray.data
該緩衝區包含數組的實際元素。通常,我們不需要使用此屬性,因為我們將使用索引訪問數組中的元素。
舉例說明:
對應輸出如下:
(2)數組創建
有幾種方法來創建數組,可以使用array函數從常規Python列表或元組中創建數組。得到的數組的類型從序列中元素的類型推導出。
(3)數組列印
當你列印一個數組,NumPy以類似嵌套列表的形式顯示它,但是呈以下布局:
最後的軸從左到右列印
次後的軸從頂向下列印
剩下的軸從頂向下列印,每個切片通過一個空行與下一個隔開
一維數組被列印成行,二維數組成矩陣,三維數組成矩陣列表。
(4)數組運算
數組上的算術運算符使用元素級別。將創建一個新數組並用結果填充。
與許多矩陣語言不同,乘法運算符*的運算在NumPy數組中是元素級別的。可以使用dot函數或方法執行矩陣乘積:
某些操作(如+=和*=)可以修改現有數組,而不是創建新數組。
此外,NumPy還有很多強大的功能,大家如果有需要可以到官方參考文檔。
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:充電實踐 |