python numpy 自定义数据类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenguangchun1993/article/details/79321674

在某些场景下,可能会用到numpy的自定义数据类型,比如需要将电子表格或者数据库的一行数据作为一个数据。

举例说明,我们创建一个存储商店库存信息的数据类型。其中,我们用一个长度为40个字符的字符串来记录商品名称,用一个32位的整数来记录商品的库存数量,最后用一个32位的单精度浮点数来记录商品价格。

以下将会用到numpy包,所以先import

>>> import numpy as np

创建数据类型

>>> 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参数。

展开阅读全文

没有更多推荐了,返回首页