Numpy的引用
import numpy as np
Numpy的數(shù)組對象——ndarray
ndarray是一個多維數(shù)組的對象萨醒,由兩部分構(gòu)成:
- 實際的數(shù)據(jù)
- 描述這些數(shù)據(jù)的元數(shù)據(jù)(數(shù)據(jù)維度苟呐、數(shù)據(jù)類型等)
ndarray數(shù)據(jù)一般要求所有元素類型相同屎鳍,數(shù)組下標(biāo)從0開始虫给。
ndarray數(shù)組可以由非同質(zhì)對象構(gòu)成坊夫,非同質(zhì)ndarray元素為對象類型搬葬。非同質(zhì)ndarray對象無法發(fā)揮Numpy的優(yōu)勢,盡量避免使用绍移。
例如:
x = np.array([ [0, 1, 2, 3, 4], [9, 8, 7, 6] ])
此時x由非同質(zhì)對象構(gòu)成悄窃,x為對象類型。
nd.array()
生成一個ndarray數(shù)組蹂窖,參數(shù)是列表類型轧抗。如果想生成一個n維數(shù)組,參數(shù)就是n個列表瞬测。
打印ndarray數(shù)組横媚,輸出為列表形式,空格分隔月趟。
ndarray的元素類型
數(shù)據(jù)類型 | 說明 |
---|---|
bool | 布爾類型灯蝴,True或False |
intc | 與C語言中的int類型一致,一般是int32或int64 |
intp | 用于索引的整數(shù)孝宗,與C語言中ssize_t一致绽乔,int32或int64 |
int8 | 字節(jié)長度的整數(shù),取值:[‐128, 127] |
int16 | 16位長度的整數(shù)碳褒,取值:[‐32768, 32767] |
int32 | 32位長度的整數(shù)折砸,取值:[‐2^32, 231‐1] |
int64 | 64位長度的整數(shù),取值:[‐2^63, 2^63‐1] |
uint8 | 8位無符號整數(shù)沙峻,取值:[0, 255] |
uint16 | 16位無符號整數(shù)睦授,取值:[0, 65535] |
uint32 | 32位無符號整數(shù),取值:[0, 2^32‐1] |
uint64 | 64位無符號整數(shù)摔寨,取值:[0, 2^64‐1] |
float16 | 16位半精度浮點數(shù):1位符號位去枷,5位指數(shù),10位尾數(shù) |
float32 | 32位半精度浮點數(shù):1位符號位是复,8位指數(shù)删顶,23位尾數(shù) |
float64 | 64位半精度浮點數(shù):1位符號位,11位指數(shù)淑廊,52位尾數(shù) |
complex64 | 復(fù)數(shù)類型逗余,實部和虛部都是32位浮點數(shù) |
complex128 | 復(fù)數(shù)類型,實部和虛部都是64位浮點數(shù) |
ndarray對象的屬性
屬性 | 說明 |
---|---|
.ndim | 秩季惩,即軸的數(shù)量或維度的數(shù)量 |
.shape | ndarray對象的尺度录粱,對于矩陣,n行m列 |
.size | ndarray對象元素的個數(shù)画拾,相當(dāng)于.shape中n*m的值 |
.dtype | ndarray對象的元素類型 |
.itemsize | ndarray對象中每個元素的大小啥繁,以字節(jié)為單位 |
ndarray數(shù)組的創(chuàng)建方法
1. 從Python中的列表、元組等類型創(chuàng)建ndarray數(shù)組
x = np.array(list/tuple)
x = np.array(list/tuple, dtype=np.float32)
當(dāng)np.array()不指定dtype時青抛,NumPy將根據(jù)數(shù)據(jù)情況關(guān)聯(lián)一個dtype類型
2. 使用NumPy中函數(shù)創(chuàng)建ndarray數(shù)組旗闽,如:arange, ones, zeros等
函數(shù) | 說明 |
---|---|
np.arange(n) | 類似range()函數(shù),返回ndarray類型蜜另,元素從0到n‐1 |
np.ones(shape) | 根據(jù)shape生成一個全1數(shù)組适室,shape是元組類型 |
np.zeros(shape) | 根據(jù)shape生成一個全0數(shù)組,shape是元組類型 |
np.full(shape,val) | 根據(jù)shape生成一個數(shù)組蚕钦,每個元素值都是val |
np.eye(n) | 創(chuàng)建一個正方的n*n單位矩陣亭病,對角線為1,其余為0 |
np.ones_like(a) | 根據(jù)數(shù)組a的形狀生成一個全1數(shù)組 |
np.zeros_like(a) | 根據(jù)數(shù)組a的形狀生成一個全0數(shù)組 |
np.full_like(a,val) | 根據(jù)數(shù)組a的形狀生成一個數(shù)組嘶居,每個元素值都是val |
np.linspace(start, end, num, endpoint=true/false) | 從start開始到end結(jié)束罪帖,生成num個數(shù),endpoint為true則包含end |
np.concatenate( (array1, array2) ) | 將兩個或多個數(shù)組合并成一個新的數(shù)組 |
ndarray數(shù)組的變換
1. ndarray數(shù)組的維度變換
方法 | 說明 |
---|---|
.reshape(shape) | 不改變數(shù)組元素邮屁,返回一個shape形狀的數(shù)組整袁,原數(shù)組不變 |
.resize(shape) | 與.reshape()功能一致,但修改原數(shù)組 |
.swapaxes(ax1,ax2) | 將數(shù)組n個維度中兩個維度進(jìn)行調(diào)換 |
.flatten() | 對數(shù)組進(jìn)行降維佑吝,返回折疊后的一維數(shù)組坐昙,原數(shù)組不變 |
例:
a.reshape( (3, 8) )
a.resize( (3, 8) )
2. ndarray數(shù)組的類型變換
new_a = a.astype(new_type)
astype()方法一定會創(chuàng)建新的數(shù)組(原始數(shù)據(jù)的一個拷貝),即使兩個類型一致
3. ndarray數(shù)組向列表的轉(zhuǎn)換
ls = a.tolist()
ndarray數(shù)組的操作
索引:獲取數(shù)組中特定位置元素的過程
切片:獲取數(shù)組元素子集的過程
一維數(shù)組的索引和切片:與Python的列表類似
a[2]
a[ 1 : 4 : 2 ]
起始編號: 終止編號(不含): 步長芋忿,3元素冒號分割
編號0開始從左遞增炸客,或‐1開始從右遞減
多維數(shù)組的索引
a[ -1, -2, -3 ]
每個維度一個索引值疾棵,逗號分割
多維數(shù)組的切片
a[ :, 1, -3 ] #選取一個維度
a[ :, 1:3, : ] #選取兩個維度
a[ :, :, ::2 ] #每個維度可以使用步長跳躍切片
ndarray數(shù)組的運(yùn)算
1. 數(shù)組與標(biāo)量之間的運(yùn)算
數(shù)組與標(biāo)量之間的運(yùn)算作用于數(shù)組的每一個元素
2. NumPy一元函數(shù)
函數(shù) | 說明 |
---|---|
np.abs(x) np.fabs(x) | 計算數(shù)組各元素的絕對值 |
np.sqrt(x) | 計算數(shù)組各元素的平方根 |
np.square(x) | 計算數(shù)組各元素的平方 |
np.log(x) np.log10(x) np.log2(x) | 計算數(shù)組各元素的自然對數(shù)、10底對數(shù)和2底對數(shù) |
np.ceil(x) np.floor(x) | 計算數(shù)組各元素的ceiling值或floor值 |
np.rint(x) | 計算數(shù)組各元素的四舍五入值 |
np.modf(x) | 將數(shù)組各元素的小數(shù)和整數(shù)部分以兩個獨立數(shù)組形式返回 |
np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x) | 計算數(shù)組各元素的普通型和雙曲型三角函數(shù) |
np.exp(x) | 計算數(shù)組各元素的指數(shù)值 |
np.sign(x) | 計算數(shù)組各元素的符號值痹仙,1(+), 0, ‐1(‐) |
3. NumPy二元函數(shù)
函數(shù) | 說明 |
---|---|
+ ‐ * / ** | 兩個數(shù)組各元素進(jìn)行對應(yīng)運(yùn)算 |
np.maximum(x,y) np.fmax() np.minimum(x,y) np.fmin() | 元素級的最大值/最小值計算 |
np.mod(x,y) | 元素級的模運(yùn)算 |
np.copysign(x,y) | 將數(shù)組y中各元素值的符號賦值給數(shù)組x對應(yīng)元素 |
> < >= <= == != | 算術(shù)比較是尔,產(chǎn)生布爾型數(shù)組 |
Reference:
中國大學(xué)MOOC北京理工大學(xué)Python數(shù)據(jù)分析與展示課程嵩天老師課件
課程主頁