最后一次更新日期: 2019/3/9
NumPy 是一個 Python 包稚晚。 它代表 “Numeric Python”。 它是一個由多維數(shù)組對象(ndarray)和用于處理數(shù)組的例程集合組成的庫近尚。
使用NumPy蠕啄,開發(fā)人員可以執(zhí)行以下操作:
- 數(shù)組的算數(shù)和邏輯運算场勤。
- 傅立葉變換和用于圖形操作的例程。
- 與線性代數(shù)有關(guān)的操作歼跟。 NumPy 擁有線性代數(shù)和隨機數(shù)生成的內(nèi)置函數(shù)和媳。
使用前先導(dǎo)入模塊:
import numpy as np
1. 數(shù)據(jù)類型
ndarray.dtype
numpy常用數(shù)據(jù)類型
dtype | type | 類型名 | 說明 |
---|---|---|---|
np.dtype('bool') | np.bool_ | 布爾類型 | True or False |
np.dtype('int8' | 'i1' | 'b') | np.int8 | 8位整數(shù)(字節(jié)) | -2^7 to 2^7-1 |
np.dtype('int16' | 'i2') | np.int16 | 16位整數(shù) | -2^15 to 2^15-1 |
np.dtype('int32' | 'i4' | 'int' | 'i') | np.int32 | 32位整數(shù) | -2^31 to 2^31-1 |
np.dtype('int64' | 'i8') | np.int64 | 64位整數(shù) | -2^63 to 2^63-1 |
np.dtype('uint8' | 'u1' | 'B') | np.uint8 | 8位無符號整數(shù) | 0 to 2^8-1 |
np.dtype('uint16' | 'u2') | np.uint16 | 16位無符號整數(shù) | 0 to 2^16-1 |
np.dtype('uint32' | 'u4' | 'uint') | np.uint32 | 32位無符號整數(shù) | 0 to 2^32-1 |
np.dtype('uint64' | 'u8') | np.uint64 | 64位無符號整數(shù) | 0 to 2^64-1 |
np.dtype('float16' | 'f2') | np.float16 | 半精度浮點數(shù) | 1符號位+5指數(shù)位+10尾數(shù)位 |
np.dtype('float32' | 'f4' | 'f') | np.float32 | 單精度浮點數(shù) | 1符號位+8指數(shù)位+23尾數(shù)位 |
np.dtype('float64' | 'f8' | 'float' | 'd') | np.float64 | 雙精度浮點數(shù) | 1符號位+11指數(shù)位+52尾數(shù)位 |
np.dtype('complex64' | 'c8') | np.complex64 | 64位復(fù)數(shù) | 雙32位浮點數(shù)(實部+虛部) |
np.dtype('complex128' | 'complex' | 'c16') | np.complex128 | 128位復(fù)數(shù) | 雙64位浮點數(shù)(實部+虛部) |
np.dtype('object' | 'O') | object | 對象 | 可用于存儲引用類型 |
np.dtype('string_' | 'S' | 'S1' | 'S2' ...) | np.bytes_ | 定長字符串 | 需要聲明長度 |
np.dtype('unicode' | 'U' | 'U1' | 'U2' ...) | np.str_ | 定長Unicode字符串 | 需要聲明長度 |
np.dtype('datetime64' | 'M') | np.datetime64 | 日期時間 | 可指定日期單位 |
注:同一種dtype可以通過多種字符串標(biāo)識去聲明的,見 | 分割的多項哈街。
python的基本數(shù)據(jù)類型可被numpy識別留瞳,轉(zhuǎn)換為對應(yīng)類別下的默認(rèn)類型,int
對應(yīng)np.int32
骚秦,float
對應(yīng)np.float64
她倘,complex
對應(yīng)np.complex128
璧微。
dtype與type的轉(zhuǎn)換
獲取dtype的type:dtype.type
通過type創(chuàng)建dtype:dtype(type)
dtype與type可以直接進行比較
np.dtype('int')==np.int32
dtype的字節(jié)順序
np.dtype('<i8')
字節(jié)順序是通過對數(shù)據(jù)類型預(yù)先設(shè)定"<"或">"來決定的。"<"意味著小端法(最小值存儲在最小的地址硬梁,即低位組放在最前面)前硫。">"意味著大端法(最重要的字節(jié)存儲在最小的地址,即高位組放在最前面)荧止。一般情況下采用默認(rèn)設(shè)置即可屹电。
2. 元素個數(shù)
ndarray.size
3. 元素的子節(jié)大小
ndarray.itemsize
由數(shù)據(jù)類型決定,每8位為1字節(jié)跃巡。
4. 總字節(jié)數(shù)
ndarray.nbytes
由size和itemsize計算得到危号。
5. 維數(shù)
ndarray.ndim
ndarray的每一個維度被描述為軸(axis),維數(shù)即軸的個數(shù)素邪,軸的編號從0開始外莲。
6. 形狀
ndarray.shape
tuple類型,每一位對應(yīng)到每個軸娘香,例如0軸方向長為10個元素苍狰,1軸方向長為5個元素的數(shù)組形狀為(10,5)
。
7. 內(nèi)存布局
numpy有兩種數(shù)據(jù)存儲的方式烘绽,一種是C-order淋昭,即行序優(yōu)先,另一種是Fortran-order安接,即列序優(yōu)先翔忽,未顯式指定時默認(rèn)C-order。由于內(nèi)部的優(yōu)化機制盏檐,多數(shù)情況下兩者在使用時沒有明顯區(qū)別歇式,一般不需要更改默認(rèn)設(shè)置。
但在使用諸如迭代器之類的方法時胡野,可通過order
參數(shù)指定元素訪問順序材失,其中'C'指代C-order,'F'指代F-order硫豆。