1 条题解

  • 0
    @ 2026-3-26 12:00:10

    NUMPY051 题解:创建包含位置和颜色的结构化数组

    题目

    创建一个长度为 n 的结构化数组,包含位置 (x, y) 和颜色 (r, g, b)。

    什么是结构化数组?

    结构化数组是 NumPy 中一种特殊的数据结构,它允许我们为数组的每个元素定义多个"字段"(field)。

    就像一个表格:

    | position | color |
    | (x,y)    | (r,g,b)|
    

    代码

    import numpy as np
    
    n = int(input())
    Z = np.zeros(n, dtype=[
        ('position', [('x', float, 1), ('y', float, 1)]),
        ('color', [('r', float, 1), ('g', float, 1), ('b', float, 1)])
    ])
    print(Z)
    print('dtype=', end='')
    print(Z.dtype)
    

    代码详解

    第1行:import numpy as np

    • 导入 NumPy 库,简写为 np

    第2行:n = int(input())

    • 读取用户输入的数组长度 n

    第3-7行:Z = np.zeros(n, dtype=[...])

    • 核心:创建长度为 n 的结构化数组
    • np.zeros(n, ...) = 创建 n 个元素,每个元素初始值为 0
    • dtype 定义数组的结构:
      • position:嵌套结构,包含 x 和 y(位置坐标)
      • color:嵌套结构,包含 r、g、b(颜色值)

    第8行:print(Z)

    • 打印数组内容

    第9-10行:打印 dtype

    • 打印数据类型定义

    dtype 结构详解

    dtype=[
        ('position', [           # 第1个字段:位置
            ('x', float, 1),  #   x坐标
            ('y', float, 1)     #   y坐标
        ]),
        ('color', [             # 第2个字段:颜色
            ('r', float, 1),   #   红色值
            ('g', float, 1),   #   绿色值
            ('b', float, 1)     #   蓝色值
        ])
    ]
    

    运行示例

    输入:

    2
    

    输出:

    [(([0.], [0.]), ([0.], [0.], [0.])) (([0.], [0.]), ([0.], [0.], [0.]))]
    dtype=[('position', [('x', '<f8', (1,)), ('y', '<f8', (1,))]), ('color', [('r', '<f8', (1,)), ('g', '<f8', (1,)), ('b', '<f8', (1,))])]
    

    扩展思考

    如果输入不同的 n:

    • n=1:创建 1 个元素
    • n=10:创建 10 个元素
    • n=100:创建 100 个元素

    数组长度由输入的 n 决定!

    核心知识点

    1. np.zeros(n, dtype=[...]) - 创建长度为 n 的结构化数组
    2. 嵌套 dtype - 字段可以是复杂结构
    3. float - 64位浮点数类型
    4. (1,) - 标量类型(单个值)
    • 1

    信息

    ID
    250
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者