11-01 记录数组的形状变化
题目
从 (3,2) 的阅读表开始,分别整数索引、切片、转置、插轴和沿轴归约,先写出 shape,再运行核对。
推导与做法
原数组是三天、两时段,shape=(3,2)。整数索引去掉一天所在的轴,得到 (2,);切片保留轴,得到 (1,2)。转置为 (2,3),插入轴为 (3,1,2)。
axis=0 把三天合并,留下两个时段;axis=1 把每天的两个时段合并,留下三天。题解同时显示 shape 和数值,用某一格手算后再看整组输出。
实现与运行
查看带注释实现。本题与相关处理函数放在同一章节代码文件中;启动工具负责定位相邻项目和选择题号。
在配套目录的 NumPy与数值计算/analysis_project 中运行。先按项目 README 执行 uv sync --locked。
# 使用项目解释器运行本题,题号决定执行哪一组演示。
uv run python "../../学习索引/参考实现/代码/ch11.py" 11-01
程序按题号输出处理后的值、查询结果或状态。先和前面的手算比较,再修改一项输入重跑。
查看本题运行结果
# 与上面的手算状态和题目数值逐项比较。
{
"integer": {
"shape": [
2
],
"value": [
10,
20
]
},
"slice": {
"shape": [
1,
2
],
"value": [
[
10,
20
]
]
},
"transpose": {
"shape": [
2,
3
],
"value": [
[
10,
30,
50
],
[
20,
40,
60
]
]
},
"newaxis": {
"shape": [
3,
1,
2
],
"value": [
[
[
10,
20
]
],
[
[
30,
40
]
],
[
[
50,
60
]
]
]
},
"axis0": {
"shape": [
2
],
"value": [
90,
120
]
},
"axis1": {
"shape": [
3
],
"value": [
30,
70,
110
]
}
}