Python numpy中的ndarry陣列

2021-10-03 19:47:32 字數 3636 閱讀 9140

維度:一組資料的組織形式。

資料維度:資料之間形成特定關係表達多種資料含義的基礎概念。

1、一維資料

一維資料:由有對等關係的有序或無序資料構成,採用線性方式組。

python表示:列表和集合表示

列表和陣列:都是表達一組資料的有序結構的型別。

區別:列表中元素的資料型別可以不同,而陣列中元素資料型別相同。

2、二維資料

二維資料:由多個一維資料構成,是一維資料的組合形式。

python表示:列表型別

3、多維資料

多維資料:由一維或二維資料在新維度上的拓展形式。

python表示:列表型別

4、高維資料

高維資料:僅利用最基本的二元關係展示資料間的複雜結構。例如資料之間的包含關係,並列關係,屬性關係等。

python表示:字典型別

一、ndarry的簡單介紹:

numpy 的引用 import numpy as np: 一般都命名為np

np.array()生成乙個ndarry陣列,它的元素以形式輸出,以空格分隔

ndarry陣列可以由非同質物件構成。

ndarry中的基本概念:

1、軸(axis):儲存資料的維度。

2、秩(rank):軸的數量,即多少維。

ndarry物件的屬性:

(1).ndim :返回秩,即軸的數量,維度的數量。

(2).shape:ndarry物件的尺度,對於矩陣返回m行n列。

(3).size:ndarry物件元素的個數,相當於矩陣m*n的值。

(4).dtype:ndarry物件的元素型別。若ndarry陣列中由非同質物件構成,返回0。

(5).itemsize:ndarry物件中每個元素的大小(位元組為單位)。

二、ndarry陣列的建立方法:

1、從python中的列表,元組等型別建立ndarry陣列:

方法:使用np.array

如:x = np.arry(list/tuple),引數為列表或元組等型別資料。

其他引數:

dtype:可以指定每個元素的資料型別。若不輸入,則會自動指定

import numpy as np

x = np.array([1

,2,3

,4], dtype =

float

)#列表形式,指定浮點型

y = np.array((0

,1,2

,3))

#元組形式,不指定任何資料型別,預設為整型

print

(x)print

(y)

2、使用numpy函式,如arange,ones,zeros:

1、np.arange(n):類似於python中的range函式,返回乙個ndarry型別,元素為從0至n-1。

2、np.ones(shape):根據shape生成乙個元素全為1的陣列,shape是元組型別。

例子

x = np.ones((3

,6))

#傳入乙個元組,表示尺度,相當於矩陣的n行m列

#生成乙個array陣列,相當於3行6列的矩陣

3、np.zeros(shape):同理ones,生成全0陣列。

4、np.full(shape, val):根據shape生成乙個陣列,每個元素值為val。

5、np.eye(n):建立乙個正方的n*n單位矩陣。

6、np.one_like(a): a為乙個ndarry陣列,根據a的形狀生成乙個全1陣列。

7、np.zeros_like(a):a為乙個ndarry陣列,根據a的形狀生成乙個全0陣列。

8、np.full_like(a, val):a為乙個ndarry陣列,根據a的形狀生成乙個元素全為val的陣列。

9、np.linspace(begin,end,step):根據起止資料等間距地填充資料,形成陣列,還有乙個引數endpoint=false則不會生成最後值。

10、np.concatenate(ndarry,ndarry):將兩個或多個陣列合成乙個陣列,以元組形式。

三、ndarry陣列的維度變換:

ndarry陣列維度變換的方法:

1、 .reshape(shape):不改變陣列元素,返回乙個shape形狀的陣列,原陣列不變,即新備份。

2、 .resize(shape):與.reshape功能一致,但能修改原陣列,直接替換掉原陣列。

3、 .swapaxes(ax1,ax2):將陣列n個維度中兩個維度進行調換。

4、 .flatten():對陣列進行降維,返回摺疊後的一維陣列,原陣列不變。

四、ndarry陣列的型別變換:

方法一:.astype(new_type)

如:

a = np.ones((2

,3,4

),dtype = np.

int)

new_a = a.astype(np.

float

)

方法二:轉化為列表,.tolist()

a = np.ones((2

,3,4

),dtype = np.int32)

new_a = a.tolist(

)

五、ndarry陣列的索引和切片:

索引:獲取陣列中特定位置元素的過程。

切片:獲取陣列元素子集的過程。

1、一維陣列的索引和切片。

索引:索引與列表相似,從左到右0開始,從右到左-1開始。

切片:形式:[起始編號:終止編號:步長]。

1、多維陣列的索引和切片。

索引: 如a[第一維,第二維,第三維]

例子:

import numpy as np

a = np.arange(24)

.reshape((2

,3,4

))a[1

,2,3

]#表達的含義,陣列一維中的第二個元素,之後二維中的第三行元素,再之後三維中的第四個元素

切片:

在某一維度僅寫上冒號表示不考慮該維度的資料。

import numpy as np

a = np.arange(24)

.reshape((2

,3,4

))a[:

,1,2

]#表示不考慮第一維度,考慮一維所有元素的第二行第三個元素a[:

,1:3

,:]#表示不考慮第一和第三維度,考慮第二維上第2到第3個元素即第二行第三行的元素a[:

,:,:

:2]#表示第三維度中的元素以2為步長進行切片

python numpy中nonzero 的用法

當使用布林陣列直接作為下標物件或者元組下標物件中有布林陣列時,都相當於用nonzero 將布林陣列轉換成一組整數陣列,然後使用整數陣列進行下標運算。nonzeros a 返回陣列a中值不為零的元素的下標,它的返回值是乙個長度為a.ndim 陣列a的軸數 的元組,元組的每個元素都是乙個整數陣列,其值為...

python numpy中nonzero 的用法

當使用布林陣列直接作為下標物件或者元組下標物件中有布林陣列時,都相當於用nonzero 將布林陣列轉換成一組整數陣列,然後使用整數陣列進行下標運算。nonzeros a 返回陣列a中值不為零的元素的下標,它的返回值是乙個長度為a.ndim 陣列a的軸數 的元組,元組的每個元素都是乙個整數陣列,其值為...

python numpy中nonzero 的用法

當使用布林陣列直接作為下標物件或者元組下標物件中有布林陣列時,都相當於用nonzero 將布林陣列轉換成一組整數陣列,然後使用整數陣列進行下標運算。nonzeros a 返回陣列a中值不為零的元素的下標,它的返回值是乙個長度為a.ndim 陣列a的軸數 的元組,元組的每個元素都是乙個整數陣列,其值為...