2 条题解

  • 0
    @ 2026-3-26 17:44:15

    NUMPY046 题解:创建结构化坐标数组

    题目

    创建结构化数组表示 [0,1]×[0,1] 区域内的坐标点。

    解题思路

    使用 np.meshgrid() 生成网格坐标,然后用结构化数组存储。

    代码

    import numpy as np
    Z = np.zeros((5, 5), [('x', float), ('y', float)])
    Z['x'], Z['y'] = np.meshgrid(np.linspace(0, 1, 5),
                                  np.linspace(0, 1, 5))
    print(Z)
    

    代码详解

    1. np.zeros((5, 5), [('x', float), ('y', float)]) —— 创建结构化数组
    2. np.linspace(0, 1, 5) —— 在 [0,1] 上取 5 个点
    3. np.meshgrid() —— 生成网格坐标

    结构化数组

    # 定义数据类型
    dtype = [('x', float), ('y', float)]
    
    # 创建数组
    Z = np.zeros(3, dtype=dtype)
    Z['x'] = [1, 2, 3]  # 设置 x 字段
    Z['y'] = [4, 5, 6]  # 设置 y 字段
    

    meshgrid 的作用

    # 一维坐标
    x = [0, 1]
    y = [0, 1, 2]
    
    # 生成网格
    X, Y = np.meshgrid(x, y)
    
    # X = [[0, 1],    # 每个元素重复 n 次
    #      [0, 1],
    #      [0, 1]]
    #
    # Y = [[0, 0],    # 每个元素重复 m 次
    #      [1, 1],
    #      [2, 2]]
    

    核心知识点

    1. 结构化数组 —— 带字段名的数组
    2. np.meshgrid() —— 生成网格
    3. np.linspace() —— 等差数列
    • 0
      @ 2026-3-25 15:38:43

      NumPy046 题解

      参考代码

      import numpy as np
      names = input().split(',')
      sizes = list(map(int, input().split(',')))
      n = int(input())
      arr = np.array([(name.encode(), size) for name, size in zip(names, sizes)],
                     dtype=[('name', 'U20'), ('size', 'i4')])
      print(arr)
      
      • 1

      信息

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