Python應用-Numpy數據結構詳解
概念介紹
numpy是python的一個擴充程序庫,支持高階大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數字函數庫。
對於數據的運算,用矩陣會比python自帶的字典或者列表快很多。
主要應用有:
數據分析 機器學習 深度學習
這裏我們主要介紹一下numpy的數據結構(內容來自NumPy菜鳥教程)
數據類型對象(dtype)
數據類型對象是用來描述與數組對應的內存區域如何使用,這依賴如下幾個方面:
數據的類型(整數,浮點數或者 Python 對象)
數據的大小(例如, 整數使用多少個字節存儲)
數據的字節順序(小端法或大端法)
在結構化類型的情況下,字段的名稱、每個字段的數據類型和每個字段所取的內存塊的部分
如果數據類型是子數組,它的形狀和數據類型
字節順序是通過對數據類型預先設定"<“或”>“來決定的。”<“意味着小端法(最小值存儲在最小的地址,即低位組放在最前面)。”>"意味着大端法(最重要的字節存儲在最小的地址,即高位組放在最前面)。
dtype對象是使用以下語法構造的:
numpy.dtype(object,align,copy)
object - 要轉換爲的數據類型對象
align - 如果爲 true,填充字段使其類似 C 的結構體。
copy - 複製 dtype 對象 ,如果爲 false,則是對內置數據類型對象的引用
我們通過以下實例來理解:
實例1
import numpy as np
#使用標量類型
dt=np.dtype(np.int32)
print(dt)
---------------------------------------------------------------------------------------------------
#輸出結果爲
int32
實例2
import numpy as np
# int8, int16, int32, int64 四種數據類型可以使用字符串'i1','i2','i4','i8'代替
dt=np.dtype('i4')
print(dt)
---------------------------------------------------------------------------------------------------
#輸出結果爲
int32
實例3
import numpy as np
#字節順序標註
dt=np.dtype('<i4')
print(dt)
---------------------------------------------------------------------------------------------------
#輸出結果爲
int32
實例4
#首先創建結構化數據類型
import numpy as np
dt=np.dtype([('age',np.int8)])
print(dt)
---------------------------------------------------------------------------------------------------
#輸出結果爲
[('age','i1')]
實例5
#將數據類型應用於ndarray對象
import numpy as np
dt=np.dtype([('age',np.int8)])
a=np.array([(10,),(20,),(30,)],dtype=dt)
print(a)
----------------------------------------------------------------------------------------------------
#輸出結果爲
[(10,)(20,)(30,)]
實例6
#類型字段名可以用於存儲實際的age列
import numpy as np
dt=np.dtype([('age',np.int8)])
a=np.array([(10,),(20,),(30,)],dtype=dt)
print(a['age'])
-------------------------------------------------------------------------------------------------------
#輸出結果爲
[10 20 30]
下面我們定義一個結構化數據類型student,包含字符串字段name,整數字段age,及浮點字段marks,並將這個dtype應用到ndarray對象
實例7
import numpy as np
student=np.dtype([('name','S20'),('age','i1'),('marks','f4')])
print(student)
-------------------------------------------------------------------------------------------------------
#輸出結果爲
[('name','S20'),('age','i1'),('marks','<f4')]
實例8
import numpy as np
student=np.dtype([('name','S20'),('age','i1'),('marks','f4')])
a=np.array([('abc',21,50),('xyz',18,75)],dtype=student)
print(a)
----------------------------------------------------------------------------------------------------
#輸出結果爲[('abc',21,50.0),('xyz',18,75.0)]