结构化数组的数据类型有多种制定方式。采用字典的方法:
np.dtype({'names':('name', 'age', 'weight'), 'formats':('U10', 'i4', 'f8')})
输出结果如下所示:
dtype([('name', '<U10'), ('age', '<i4'), ('weight', '<f8')])
为了简明起见,数值数据类型可以用 Python 类型或 NumPy 的 dtype 类型指定:
np.dtype({'names':('name', 'age', 'weight'), 'formats':((np.str_, 10), int, np.float32)})
输出结果如下所示:
dtype([('name', '<U10'), ('age', '<i8'), ('weight', '<f4')])
复合类型也可以是元组列表:
np.dtype([('name', 'S10'), ('age', 'i4'), ('weight', 'f8')])
输出结果如下所示:
dtype([('name', 'S10'), ('age', '<i4'), ('weight', '<f8')])
如果类型的名称对你来说并不重要,那你可以仅仅用一个字符串来指定它。在该字符串中数据类型用逗号分隔:
np.dtype('S10,i4,f8')
输出结果如下所示:
dtype([('f0', 'S10'), ('f1', '<i4'), ('f2', '<f8')])
简写的字符串格式的代码可能看起来令人困惑,但是它们其实基于非常简单的规则。第一个(可选)字符是 < 或者 >,分别表示“低字节序”(little endian)和“高字节序”(bid endian),表示字节(bytes)类型的数据在内存中存放顺序的习惯用法。后一个字符指定的是数据的类型:字符、字节、整型、浮点型,等等(如表 2-4 所示)。最后一个字符表示该对象的字节大小。
|