1 条题解
-
0
NUMPY020 题解:3D数组索引转换
题目
给定 3D 数组形状 (a, b, c) 和一维索引 k,求对应的三维坐标 (x, y, z)。
代码
import numpy as np a, b, c, k = map(int, input().split()) x, y, z = np.unravel_index(k, (a, b, c)) print(x, y, z)
代码详解
np.unravel_index
np.unravel_index(索引, 形状)将一维索引转为多维索引。
示例:
np.unravel_index(0, (6, 7, 8)) # (0, 0, 0) np.unravel_index(99, (6, 7, 8)) # (1, 5, 3)
索引展开原理
行优先顺序(C order)
NumPy 按行展开索引:
形状 (2, 3, 4): 索引: 坐标: 0 → (0, 0, 0) 1 → (0, 0, 1) 2 → (0, 0, 2) 3 → (0, 0, 3) 4 → (0, 1, 0) ...以此类推计算公式
对于形状 (a, b, c):
其他实现方法
方法2:手动计算
import numpy as np a, b, c, k = map(int, input().split()) x = k // (b * c) y = (k // c) % b z = k % c print(x, y, z)
核心知识点
知识点 说明 np.unravel_index()一维转多维索引 行优先顺序 NumPy 默认索引方式
- 1
信息
- ID
- 466
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者