美文网首页【完】Numpy学习笔记
【numpy笔记_2】结构化数组

【numpy笔记_2】结构化数组

作者: fakeProgramer | 来源:发表于2023-02-21 10:45 被阅读0次

    上次说到的array对象是由一个个元素组成的数组,每个元素是一个数字,也可以看做是一个对象。那如果把对象替换成一个包含多种数据类型的“集合”呢?这就是结构化数组的形态。
    总而言之:

    • 普通数组中存放着同一类型的对象;
    • 结构化数组中存放不同类型的对象。

    结构化数组中包含了不同数据类型对象,每个对象被称为一个field。

    feild由三部分构成:

    • str,代表name;
    • type,有效的dtype类型;
    • title,可选。

    这么看可能有点抽象。我们新建一个结构化数组看看。
    创建两步走:

    • 创建自定义dtype类型:numpy.dtype()方法,传入一个元组的列表;
    • 创建结构化array对象:numpy.array()方法,传入数组,和自定义的dtype。

    import numpy as np
    my_dtype = np.dtype(   [('name', 'U10'), ('age', 'i4'), ('weight', 'f4')]   )
    my_data = [
        ('哈利', 24, 74.2),
        ('伯特', 19, 81.0),
        ('坚妮', 21, 45.2)
                        ]
    my_array = np.array(my_data, dtype=my_dtype)
    print(my_array)
    print('*'*20)
    print(f'姓名name: {my_array["name"]},数据类型: {my_array["name"].dtype}')
    print(f'年龄age: {my_array["age"]},数据类型: {my_array["age"].dtype}')
    print(f'体重weight: {my_array["weight"]},数据类型: {my_array["weight"].dtype}')
    # 运行结果:
    [('哈利', 24, 74.2) ('伯特', 19, 81. ) ('坚妮', 21, 45.2)]
    ********************
    姓名name: ['哈利' '伯特' '坚妮'],数据类型: <U10
    年龄age: [24 19 21],数据类型: int32
    体重weight: [74.2 81.  45.2],数据类型: float32
    

    这么看就很明白了。是的,结构化数据就像这张图一样:


    结构化数组.png

    U10、i4、f4这些是数据类型标识码,在numpy中,每种数据类型都有一个唯一标识的字符码。唯一标识码和上篇提到的数据类型呈一一对应,如下图:


    numpy数据类型to唯一标识符.png

    有关结构化数组的概念就介绍到这里。下一篇开始将对numpy的日常操作展开概括性的介绍。

    相关文章

      网友评论

        本文标题:【numpy笔记_2】结构化数组

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