天天看點

python numpy 自定義資料類型

在某些場景下,可能會用到numpy的自定義資料類型,比如需要将電子表格或者資料庫的一行資料作為一個資料。

舉例說明,我們建立一個存儲商店庫存資訊的資料類型。其中,我們用一個長度為40個字元的字元串來記錄商品名稱,用一個32位的整數來記錄商品的庫存數量,最後用一個32位的單精度浮點數來記錄商品價格。

以下将會用到numpy包,是以先import

>>> import numpy as np
           

建立資料類型

>>> t = np.dtype([('name',np.str_,),('numitems',np.int32),('price',np.float32)])
>>> t
dtype([('name', '<U40'), ('numitems', '<i4'), ('price', '<f4')])
           

上面顯示出的類型如 “< U40” 表示的是字元編碼,下面列出字元編碼的對應表。

python numpy 自定義資料類型

解析:< U40

  • < :表示字元序,即位長為40的字儲存的順序,包括大端序(big-endian)和小端序(little-endian)。大端序是将最高位位元組存儲在最低的記憶體位址處,用>表示;與之相反,小端序是将最低位位元組存儲在最低的記憶體位址處,用<表示。
  • U: 字元編碼
  • 40: 用40位存儲字。

檢視類型

>>> t['name']
dtype('<U40')
           

使用自定義的類型建立數組

>>> items = np.array([('Meaning of life DVD', , ),('Butter', , )], dtype=t)
>>> items
array([('Meaning of life DVD', ,   ),
       ('Butter', ,  )],
      dtype=[('name', '<U40'), ('numitems', '<i4'), ('price', '<f4')])
>>> items[]
('Butter', ,  )
           

在用array函數建立數組時,如果沒有在參數中指定資料類型,将預設為浮點數類型,是以這裡必須制定dtype參數。