Menu
CoddyTech

重塑数组

本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 16 课,共 60 课。

一家商店 12 个月的销售额以一个一维数组的形式排列。将它们折叠成 4 个季度,每个季度 3 个月,就能提出新的问题:

一列包含 12 个月销售额的数据,依次为 5 8 6 9 12 10 14 15 11 7 6 9,折叠成一个网格,共 4 行,标记为 Q1 到 Q4,每行 3 个月,顺序不变

.reshape(rows, columns) 会按顺序填充各行:

months = np.array([5, 8, 6, 9, 12, 10, 14, 15, 11, 7, 6, 9])
quarters = months.reshape(4, 3)
print(quarters.sum(axis=1))
print(months.reshape(2, -1).shape)

这会输出:

[19 31 40 22]
(2, 6)

各维度的大小相乘后必须等于元素总数:4 乘以 3 等于 12。将其中一个维度的大小写成 -1,NumPy 就会计算出它的大小。

.flatten() 可以把任意表格还原成一个扁平数组。本章最后会用同样的方法,把一个骰子游戏分成几轮。

challenge icon

挑战

简单

一位读者记录了 3 周内每天(周一到周日)的阅读分钟数,并将数据存储在一维数组 minutes 中。程序会读取一个 week 数字:1、2 或 3。

  1. 将 minutes 重塑为 weeks,每周占一行。
  2. 打印 Weeks:,然后打印表格。
  3. 打印每周的总分钟数。
  4. 打印所选周对应的行。

对于记录了 2 周的数据,输入 2 时:

Weeks:
[[10  0 25 30 15 45 20]
 [ 5 35 40  0 20 60 30]]
Weekly totals: [145 190]
Week 2: [ 5 35 40  0 20 60 30]

亲手试试

import numpy as np

# 连续 3 周每天的阅读分钟数,按周一到周日排列
minutes = np.array([20, 35, 15, 0, 40, 60, 45, 25, 30, 20, 10, 35, 50, 55,
                    30, 30, 25, 20, 45, 40, 70])
week = int(input())

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

数据与图表中的所有课

自己练习: Python 在线编译器