在某些場景下,可能會用到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” 表示的是字元編碼,下面列出字元編碼的對應表。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnaukjMxAzN2UDNvw1Mx0iMtgTMvwVbvNmLuRGZ19Gbj5CdrJmL5Z3Ymx2Y2ADcvw1LcpDc0RHaiojIsJye.jpg)
解析:< 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參數。