1 条题解
-
0
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 决定!
核心知识点
np.zeros(n, dtype=[...])- 创建长度为 n 的结构化数组- 嵌套 dtype - 字段可以是复杂结构
- float - 64位浮点数类型
- (1,) - 标量类型(单个值)
- 1
信息
- ID
- 250
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者