Numpy 基礎資料結構

2021-09-20 10:20:34 字數 4331 閱讀 3690

numpy是python中乙個執行速度非常快的的數學庫,主要用於陣列計算,包含:

接下來,我會系列介紹numpy的知識點,包含其基礎資料結構,通用函式,索引及切片,隨機數生成,資料的讀取與輸出。

本篇先從numpy的基礎資料結構開始。事實上,pyhton中乙個更常用且強大的工具包pandas就是在numpy的基礎上構建的。所以,學好numpy,對後續學習pandas模組也有很大的幫助。

numpy陣列稱為ndarray,其有兩部分組成:實際的資料、描述這些資料的元資料。結合**理解:

import numpy as np

ar=np.array([1

,2,3

,4,5

,6,7

])print

(ar)

# 輸出陣列,注意陣列的格式:中括號,元素之間沒有逗號(和列表區分)

print

(ar.ndim)

# 輸出陣列維度的個數(軸數),或者說「秩」,維度的數量也稱rank

print

(ar.shape)

# 陣列的維度,對於n行m列的陣列,shape為(n,m)

print

(ar.size)

# 陣列的元素總數,對於n行m列的陣列,元素總數為n*m

print

(ar.dtype)

# 陣列中元素的型別,類似type()(注意了,type()是函式,.dtype是方法)

print

(ar.itemsize)

# 陣列中每個元素的位元組大小,int32l型別位元組為4,float64的位元組為8

print

(ar.data)

# 包含實際陣列元素的緩衝區,由於一般通過陣列的索引獲取元素,所以通常不需要使用這個屬性。

建立numpy陣列的方法有很多,我們來看下常用的函式和方法:

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')])

# 注意巢狀序列數量不一會怎麼樣

print

(ar1,

type

(ar1)

,ar1.dtype)

print

(ar2,

type

(ar2)

,ar2.dtype)

print

(ar3,ar3.shape,ar3.ndim,ar3.size)

# 二維陣列,共6個元素

print

(ar4,ar4.shape,ar4.ndim,ar4.size)

# 一維陣列,共2個元素

執行結果:

重點關注下陣列『ar4』的形狀與型別,可以發現,當巢狀序列的數量不一樣時,它會返回乙個一維陣列。

arange()函式

# arange(),類似range(),在給定間隔內返回均勻間隔的值。

print

(np.arange(10)

)# 返回0-9,整型

print

(np.arange(

10.0))

# 返回0.0-9.0,浮點型

print

(np.arange(5,

12))# 返回5-11

print

(np.arange(

5.0,12,

2))# 返回5.0-12.0,步長為2

print

(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

)print

(ar1,

type

(ar1)

)print

(ar2)

print

(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)

print

(ar1,ar1.dtype)

print

(ar2,ar2.dtype)

print

('------'

)# 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)

print

(ar3)

print

(ar4)

print

('------'

)# 返回具有與給定陣列相同的形狀和型別的零陣列,這裡ar4根據ar3的形狀和dtype建立乙個全0的陣列

ar5 = np.ones(9)

ar6 = np.ones((2

,3,4

))ar7 = np.ones_like(ar3)

print

(ar5)

print

(ar6)

print

(ar7)

# ones()/ones_like()和zeros()/zeros_like()一樣,只是填充為1

執行結果:

eye()函式

# 建立乙個正方的n*n的單位矩陣,對角線值為1,其餘為0

print

(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上關係的有限集 邏輯結構 資料...