在某些场景下,可能会用到numpy的自定义数据类型,比如需要将电子表格或者数据库的一行数据作为一个数据。
举例说明,我们创建一个存储商店库存信息的数据类型。其中,我们用一个长度为40个字符的字符串来记录商品名称,用一个32位的整数来记录商品的库存数量,最后用一个32位的单精度浮点数来记录商品价格。
创建数据类型
>>> t = np.dtype([('name',np.str_,40),('numitems',np.int32),('price',np.float32)])
>>> t
dtype([('name', '<U40'), ('numitems', '<i4'), ('price', '<f4')])
上面显示出的类型如 “< U40” 表示的是字符编码,下面列出字符编码的对应表。
解析:< U40
< :表示字符序,即位长为40的字储存的顺序,包括大端序(big-endian)和小端序(little-endian)。大端序是将最高位字节存储在最低的内存地址处,用>表示;与之相反,小端序是将最低位字节存储在最低的内存地址处,用<表示。
U: 字符编码
40: 用40位存储字。
查看类型
>>> t[‘name’]
dtype(‘<U40’)
使用自定义的类型创建数组
>>> items = np.array([('Meaning of life DVD', 42, 3.14),('Butter', 13, 2.72)], dtype=t)
>>> items
array([('Meaning of life DVD', 42, 3.1400001 ),
('Butter', 13, 2.72000003)],
dtype=[('name', '<U40'), ('numitems', '<i4'), ('price', '<f4')])
>>> items[1]
('Butter', 13, 2.72000003)
在用array函数创建数组时,如果没有在参数中指定数据类型,将默认为浮点数类型,所以这里必须制定dtype参数。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/102841.html