如果你使用 python 語言進行科學計算,那麼一定會接觸到 numpy。numpy 是支援 python 語言的數值計算擴充庫,其擁有強大的多維陣列處理與矩陣運算能力。除此之外,numpy 還內建了大量的函式,方便你快速構建數學模型。
本課程難度為一般,屬於初級級別課程,適合具有 python 基礎,並對使用 numpy 進行科學計算感興趣的使用者。
numpy 的英文全稱為 numerical python,意味 python 面向數值計算的第三方庫。numpy 的特點在於,針對 python 內建的陣列型別做了擴充,支援更高維度的陣列和矩陣運算,以及更豐富的數學函式。
numpy 是 scipy.org 中最重要的庫之一,它同時也被 pandas,matplotlib 等我們熟知的第三方庫作為核心計算庫。當你在單獨安裝這些庫時,你會發現同時會安裝 numpy 作為依賴。
sudo pip install numpy
windows 使用者只需要開啟系統命令行工具,輸入pip install numpy
即可。當然,ubuntu & debian 使用者還可以用 apt-get 安裝:
sudo apt-get install python-numpy
python 本身支援的數值型別有int
(整型,python2 中存在 long 長整型)、float
(浮點型)、bool
(布林型) 和complex
(複數型)。
而 numpy 支援比 python 本身更為豐富的數值型別,細分如下:
bool
:布林型別,1 個位元組,值為 true 或 false。
int
:整數型別,通常為 int64 或 int32 。
intc
:與 c 裡的 int 相同,通常為 int32 或 int64。
intp
:用於索引,通常為 int32 或 int64。
int8
:位元組(從 -128 到 127)
int16
:整數(從 -32768 到 32767)
int32
:整數(從 -2147483648 到 2147483647)
int64
:整數(從 -9223372036854775808 到 9223372036854775807)
uint8
:無符號整數(從 0 到 255)
uint16
:無符號整數(從 0 到 65535)
uint32
:無符號整數(從 0 到 4294967295)
uint64
:無符號整數(從 0 到 18446744073709551615)
float
:float64 的簡寫。
float16
:半精度浮點,5 位指數,10 位尾數
float32
:單精度浮點,8 位指數,23 位尾數
float64
:雙精度浮點,11 位指數,52 位尾數
complex
:complex128 的簡寫。
complex64
:複數,由兩個 32 位浮點表示。
complex128
:複數,由兩個 64 位浮點表示。
在 numpy 中,上面提到的這些數值型別都被歸於dtype(data-type)
物件的例項。
我們可以用numpy.dtype(object, align, copy)
來指定數值型別。而在陣列裡面,可以用dtype=
引數。
import numpy as np
a = np.array([1.1, 2.2, 3.3], dtype=np.float64) # 指定 1 維陣列的數值型別為 float64
另外,你可以使用 .astype() 方法在不同的數值型別之間相互轉換。
a.astype(int) # 將 a 的數值型別從 float64 轉換為 int
最後,你可以使用 .dtype 來檢視 dtype 屬性。
a.dtype # 檢視 a 的數值型別
了解並陣列 numpy 支援的數值型別至關重要,因為 dtype 引數幾乎延伸到了 numpy 中所有與多維陣列相關的方法中去。 numpy簡明教程 1
讀的是numpy user guide release 1.3,官方另有一本reference,600多頁,還是先讀這個省事兒的。凡例 a.float 表示物件型別是float,用時不用加 和 b.中的跳格表示換行。chap 2 numpy basics 1.import numpy as np,沿...
NumPy簡明教程(二 陣列1)
numpy陣列是乙個多維陣列物件,稱為ndarray。其由兩部分組成 大部分操作僅針對於元資料,而不改變底層實際的資料。關於numpy陣列有幾點必需了解的 在詳細介紹numpy陣列之前。先詳細介紹下numpy陣列的基本屬性。numpy陣列的維數稱為秩 rank 一維陣列的秩為1,二維陣列的秩為2,以...
NumPy教程之(四)
numpy針對陣列 array 的基本數學操作函式一般是逐元素進行的,比如矩陣的加減運算,線性代數上的矩陣運算則有專門的函式,如dot函式等,具體看示例。陣列的有些數 算,如 和 施行的是原位運算,即直接修改覆蓋原來的變數,而不是新建乙個變數,如下所示 當遇到型別不同的陣列進行運算的時候,numpy...