資料類型對象 (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)]