Numpy入門

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ù)部分以兩個獨(dú)立數(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ù)分析與展示課程嵩天老師課件
課程主頁

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容