numpy是python中乙個執行速度非常快的的數學庫,主要用於陣列計算,包含:
接下來,我會系列介紹numpy的知識點,包含其基礎資料結構,通用函式,索引及切片,隨機數生成,資料的讀取與輸出。
本篇先從numpy的基礎資料結構開始。事實上,pyhton中乙個更常用且強大的工具包pandas就是在numpy的基礎上構建的。所以,學好numpy,對後續學習pandas模組也有很大的幫助。
numpy陣列稱為ndarray,其有兩部分組成:實際的資料、描述這些資料的元資料。結合**理解:
建立numpy陣列的方法有很多,我們來看下常用的函式和方法:import numpy as np
ar=np.array([1
,2,3
,4,5
,6,7
(ar)
# 輸出陣列,注意陣列的格式:中括號,元素之間沒有逗號(和列表區分)
(ar.ndim)
# 輸出陣列維度的個數(軸數),或者說「秩」,維度的數量也稱rank
(ar.shape)
# 陣列的維度,對於n行m列的陣列,shape為(n,m)
(ar.size)
# 陣列的元素總數,對於n行m列的陣列,元素總數為n*m
(ar.dtype)
# 陣列中元素的型別,類似type()(注意了,type()是函式,.dtype是方法)
(ar.itemsize)
# 陣列中每個元素的位元組大小,int32l型別位元組為4,float64的位元組為8
(ar.data)
# 包含實際陣列元素的緩衝區,由於一般通過陣列的索引獲取元素,所以通常不需要使用這個屬性。
array()函式
執行結果:# array()函式,括號內可以是列表、元祖、陣列、生成器等
ar1 = np.array(
range(10
))# 整型
ar2 = np.array([1
,2,3.14,4
,5])
# 浮點型
ar3 = np.array([[
1,2,
3],(
'a',
'b',
'c')])
# 二維陣列:巢狀序列(列表,元祖均可)
ar4 = np.array([[
1,2,
3],(
'a',
'b',
'c',
'd')])
# 注意巢狀序列數量不一會怎麼樣
(ar1,
type
(ar1)
,ar1.dtype)
(ar2,
type
(ar2)
,ar2.dtype)
(ar3,ar3.shape,ar3.ndim,ar3.size)
# 二維陣列,共6個元素
(ar4,ar4.shape,ar4.ndim,ar4.size)
# 一維陣列,共2個元素
重點關注下陣列『ar4』的形狀與型別,可以發現,當巢狀序列的數量不一樣時,它會返回乙個一維陣列。
arange()函式
執行結果:# arange(),類似range(),在給定間隔內返回均勻間隔的值。
(np.arange(10)
)# 返回0-9,整型
(np.arange(
10.0))
# 返回0.0-9.0,浮點型
(np.arange(5,
12))# 返回5-11
(np.arange(
5.0,12,
2))# 返回5.0-12.0,步長為2
(np.arange(
10000))
# 如果陣列太大而無法列印,numpy會自動跳過陣列的中心部分,並只列印邊角:
linspace()函式
執行結果:# linspace():返回在間隔[開始,停止]上計算的num個均勻間隔的樣本。
ar1 = np.linspace(
2.0,
3.0, num=5)
ar2 = np.linspace(
2.0,
3.0, num=
5, endpoint=
false
)ar3 = np.linspace(
2.0,
3.0, num=
5, retstep=
true
(ar1,
type
(ar1)
(ar2)
(ar3,
type
(ar3)
)# numpy.linspace(start, stop, num=50, endpoint=true, retstep=false, dtype=none)
# start:起始值,stop:結束值
# num:生成樣本數,預設為50
# endpoint:如果為真,則停止是最後乙個樣本。否則,不包括在內。預設值為true。
# retstep:如果為真,返回(樣本,步驟),其中步長是樣本之間的間距 → 輸出為乙個包含2個元素的元祖,第乙個元素為array,第二個為步長實際值
zero() / zeros_like() / ones / ones_like()函式
執行結果:ar1 = np.zeros(
5)
ar2 = np.zeros((2
,2), dtype = np.
int)
(ar1,ar1.dtype)
(ar2,ar2.dtype)
('------'
)# numpy.zeros(shape, dtype=float, order='c'):返回給定形狀和型別的新陣列,用零填充。
# shape:陣列緯度,二維以上需要用(),且輸入引數為整數
# dtype:資料型別,預設numpy.float64
# order:是否在儲存器中以c或fortran連續(按行或列方式)儲存多維資料。
ar3 = np.array(
[list
(range(5
)),list
(range(5
,10))
])ar4 = np.zeros_like(ar3)
(ar3)
(ar4)
('------'
)# 返回具有與給定陣列相同的形狀和型別的零陣列,這裡ar4根據ar3的形狀和dtype建立乙個全0的陣列
ar5 = np.ones(9)
ar6 = np.ones((2
,3,4
))ar7 = np.ones_like(ar3)
(ar5)
(ar6)
(ar7)
# ones()/ones_like()和zeros()/zeros_like()一樣,只是填充為1
eye()函式
# 建立乙個正方的n*n的單位矩陣,對角線值為1,其餘為0
(np.eye(5)
)
numpy 基礎資料結構
陣列的維數稱為秩 rank 一維陣列的秩為1,二維陣列的秩為2,以此類推 在numpy中,每乙個線性的陣列稱為是乙個軸 axes 秩其實是描述軸的數量 比如說,二維陣列相當於是兩個一維陣列,其中第乙個一維陣列中每個元素又是乙個一維陣列,所以一維陣列就是numpy中的軸 axes 第乙個軸相當於是底層...
Numpy常用的資料結構
numpy安裝 pip install numpy numpy底層是使用c語言來實現運算的效果非常高 資料清洗的意義 資料清洗常用工具 arange和rang的區別 numpy常用的資料結果 numpy常用方法 zeros ones dtype size 返回陣列中使用元素的總和 shape 檢視該...
資料結構基礎
資料結構定義 定義 一 資料元素集合 也可稱資料物件 中各元素的關係。定義 二 相互之間存在特定關係的資料元素集合。資料結構的種類 1 集合 2 線性結構 3 樹形結構 4 圖狀結構 或網狀結構 資料結構的形式定義 資料結構名稱 d,s 其中d為資料元素的有限集,s是d上關係的有限集 邏輯結構 資料...