美文网首页《利用Python进行数据分析》 第二版
《利用Python进行数据分析》 附录 A.5结构化和记录数组

《利用Python进行数据分析》 附录 A.5结构化和记录数组

作者: CCC考研 | 来源:发表于2019-01-06 09:24 被阅读4次

    附录A 高阶Numpy


    A.5 结构化和记录数组

           ndarray是一个同构数据的容器。也就是说,它表示一个内存块,其中每个元素占用相同数量的字节,由dtype确定。表面上,ndarray的这种特性不允许你使用它表示异构的数据或表格型数据。结构化数组是一个ndarray,其中每个元素可以被认为代表C中的struct(因此是“结构化”的名称),或者是SQL表中具有多个命名字段的行。

           有几种方法可以指定结构化的dtype(请参阅NumPy官方在线文档)。一种典型的方式是使用(field_name, field_data_type)作为元组的列表。现在,数组的元素是元组对象,其元素可以像字典一样访问。

           字段名称存储在dtype.names属性中。当你访问结构化数组中的字段时,将返回数据的分步视图,因此不会复制任何内容。

    图A-1:结构化数组

    A.5.1 嵌套dtype和多维字段

    1.当指定结构化的dtype时,你可以另外传递一个形状(以int或元组的形式)(见图A-2)

    图A-2:传递一个形状

    2.可以将更复杂的嵌套结构表示为数组中的单个内存块,也可以嵌套dtype来创建更复杂的结构(见图A-3)

    图A-3:嵌套dtype

    :pandas的DataFrame并不直接支持这个特性,尽管它与分层索引很相似


    A.5.2 为什么要使用结构化数组

           与pandas的DataFrame相比,NumPy结构化数组是一个相对底层的工具。结构化数组提供了一种将内存块解释为具有任意复杂嵌套列的表格结构的方法。由于数组中的每个元素都在内存中表示为固定数量的字节,因此结构化数组提供了读/写磁盘(包括内存映射)数据,以及在网络上传输数据和其他此类用途的非常快速有效的方法。

           作为结构化数组的另一种常见用途,将数据文件编写为固定长度的记录字节流是将C和C ++代码中的数据序列化的常用方法,这在业界传统系统中很常见。只要知道文件的格式(每个记录的大小以及每个元素的顺序、字节大小和数据类型),就可以用np.fromfile将数据读入内存。像这样的专门用途超出了本书的范围,但值得知道的是这样的实现是可能的。


    相关文章

      网友评论

        本文标题:《利用Python进行数据分析》 附录 A.5结构化和记录数组

        本文链接:https://www.haomeiwen.com/subject/wnkwkqtx.html