天天看點

NumPy ndarray數組的元素類型

NumPy ndarray數組的元素類型

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

NumPy ndarray數組的元素類型