一、數據維度
一個數據表達一個含義,一組數據表達一個或多個含義。
數據維度概念:一組數據的組織形式,其中有一維數據、二維數據、多維數據、高維數據。
1、 一維數據
一維數據由對等關系的有序或無序數據構成,采用線性方式組織。
對應:列表、集合
#列表有序 [1,2,3,4,5] #集合無序 {1,2,3,4,5}
2、二維數據
二維數據由多個一維數據構成,是一維數據的組合形式。
對應:列表
[[1,2,3],[4,5,6]]
3、多維數據
多維數據由一維或二維數據在新維度上擴展形成。
對應:列表
[[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]]
4、高維數據
高維數據僅使用最基本二元關系展示數據間的復雜結構。
對應:字典或數據表示格式
#字典一一對應為二元關系 dict={ "x1":"1", "y1":"2", }
數據表示格式:JSON、XML、YAML等格式
二、NumPy
1、簡介
NumPy是一個開源的科學計算基礎庫,是SciPy、Pandas等數據處理或科學計算庫的基礎。
2、主要功能:
(1)、提供了一個強大的N維數組對象ndarray:
優點:
1、數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據。
2、設置專門的數組對象,經過優化可以提升這類應用的運算速度。
3、數組對象采用相同的數據類型,有助於節省運算和存儲空間。
實例:
import numpy as np a=np.array([1,2,3,4,5]) b=np.array([6,7,8,9,10]) c=[] c=a**2+b**2 print(c)
(2)、提供了一組廣播功能相關的函數,用來在數據間進行計算;
(3)、整合了C/C++/Fortran代碼,並提供整合工具;
(4)、提供了線性代數、傅里葉變換、隨機數生成等功能用於科學計算。
三、ndarray:
多維數組,由實際數據和描述這些數據的元數據(數據維度、數據類型)兩部分構成。
一般要求所有元素類型相同,數組下標從0開始。
np.array()可以生成一個ndarray數組,輸出成[]形式,元素由空格分割。
兩個屬性:
軸(axis):保存數據維度;秩(rank):軸的數量
ndarray對象的屬性:
1、ndim:秩,軸數量或維度數量
import numpy as np a=np.array([[1,2,3,4,5],[6,7,8,9,10]]) print(a.ndim)
2、shape:ndarray對象尺度,即n行m列
import numpy as np a=np.array([[1,2,3,4,5],[6,7,8,9,10]]) print(a.shape)
3、size:ndarray對象元素個數,為shape中n*m
import numpy as np a=np.array([[1,2,3,4,5],[6,7,8,9,10]]) print(a.size)
4、dtype:ndarray對象的元素的類型
import numpy as np a=np.array([[1,2,3,4,5],[6,7,8,9,10]]) print(a.dtype)
5、itemsize:ndarray對象中每個元素大小
import numpy as np a=np.array([[1,2,3,4,5],[6,7,8,9,10]]) print(a.itemsize)
四、ndarray的相關操作
1、創建:
(1)、從Python中的列表、元組等
import numpy as np #不聲明數據類型,創建時會自動讀取類型 nd=np.array(list/tuple)
import numpy as np #聲明數據類型 nd=np.array(list/tuple,dtype=np.int32)
(2)、使用NumPy中函數
函數 | 說明 |
arange(n) | 返回ndarray類型,元素從0到n-1 |
ones(shape) | 根據shape生成一個全1數組 |
zeros(shape) | 根據shape生成全0數組 |
full(shape,value) | 根據shape生成一個數組,每元素值全為value |
eye(n) | 一個正方形的n*n單位矩陣,對角線為1,其余為0 |
ones_like(a) | 根據數組a的形狀生成一個全1數組 |
zeros_like(a) | 根據數組a的形狀生成一個全0數組 |
full_like(a,value) | 根據數組a的形狀生成一個數組,每元素值全為value |
linspace() | 根據起止數據等間距地填充數據,形成數組 |
concatenate() | 根據兩個或多個數組合並成一個新數組 |
import numpy as np nd=np.linspace(2,20,10) print(nd)

添加endpoint=Flase,【2,20)linspace前閉合后開放等分:
import numpy as np nd=np.linspace(2,20,10,endpoint=False) print(nd)
concatenate合並:
import numpy as np nd=np.linspace(2,20,10) nd2=np.linspace(2,10,3) nd3=np.concatenate((nd,nd2)) print(nd3)
(3)、從字節流中
(4)、從文件中讀取特定格式
2、變換
(1)、維度變換
reshape(不改變原數組)
import numpy as np nd=np.full((2,4,8),6) a=nd.reshape((8,8)) print(a) print() print(nd)
resize(改變原數組)
import numpy as np nd=np.full((2,4,8),6) print(nd) print() nd.resize((8,8)) print(nd)
(2)、元素類型變換
astype(返回一個新數組)
import numpy as np nd=np.full((2,4,8),6,dtype=int) print(nd) nd2=nd.astype(np.float) print() print(nd2)
(3)、ndarray數組轉化成列表
tolist()
import numpy as np nd=np.full((2,4,2),1) print(nd) nd2=nd.tolist() print() print(nd2)
3、索引
獲取數組中特定位置元素的過程。
一維:和python列表的索引方式相同
多維:nd[x,y,z]
import numpy as np nd=np.arange(18).reshape((2,3,3)) print(nd) print("索引的元素為:"+str(nd[1,2,2]))
4、切片
獲取數組元素子集的過程
一維:和python列表的切片方式相同
多維:
import numpy as np nd=np.arange(18).reshape((2,3,3)) print(nd) print("切出來的:") print(nd[:,:,::2])
5、運算
數組與標量間的計算則為數組中每個元素與標量的計算。
示例:
import numpy as np nd=np.arange(18).reshape((2,3,3)) print(nd) nd=nd/2 print("運算結果:") print(nd)
函數如下:
函數 | 說明 |
abs(n) fabs(n) |
計算數組各元素的絕對值 |
sqrt(n) | 計算數組各元素的平方根 |
square(n) | 計算數組各元素的平方 |
rint(n) | 各元素四舍五入 |
modf(n) | 各元素的整數和小數部分分成兩個獨立數組 |
cos(n) | 三角函數 |
exp(n) | 各元素指數值 |
sign(n) | 各元素的符號值,正數顯示+,負數顯示-,0顯示0 |
log(n) | 計算各元素對數 |
ceil(n) floor(n) |
計算各元素ceiling值或floor值 |