索引和切片
本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 8 课,共 60 课。
数组和列表一样,从 0 开始索引。五天的钢琴练习时间,单位为分钟:
practice = np.array([20, 0, 35, 15, 40])
print(practice[0]) # 第一个
print(practice[-1]) # 最后一个
print(practice[1:4]) # 位置 1 到 3这会输出:
20
40
[ 0 35 15]二维数组用一对方括号中的行和列来定位,行在前。stock 的每一行代表一家商店,每一列代表一种产品:
stock = np.array([[5, 8, 2, 6], [9, 1, 4, 3], [7, 0, 6, 8]])
print(stock[1, 2]) # 一个值
print(stock[0]) # 一整行
print(stock[:, 3]) # 一整列这会输出:
4
[5 8 2 6]
[6 3 8]在行的位置,冒号表示所有行,而像 0:2 这样的切片表示其中一些行。因此,data[:, column] 表示每个样本的一个特征。
挑战
简单一家酒店的报告有误。bookings 中每行代表一周,每列代表一天,从周一到周日。程序会读取一个周数和一个天数,编号从 1 开始。
每行都有一个 bug。修复它们,使其符合标签的含义:
Week:整周Weekend:最后两天,也就是一个切片Day:每周的那一天Booked:那一天的预订情况
第 3 周,第 5 天:
Week 3: [11 12 13 17 20 24 26]
Weekend: [24 26]
Day 5: [18 19 20 21]
Booked: 20亲手试试
import numpy as np
# 一家小旅馆的客房预订数量:每周一行(第 1 周到第 4 周),
# 每天一列(第 1 天到第 7 天,周一到周日)
bookings = np.array([
[12, 15, 14, 16, 18, 25, 27],
[10, 13, 15, 14, 19, 26, 28],
[11, 12, 13, 17, 20, 24, 26],
[9, 14, 16, 15, 21, 27, 29],
])
week = int(input())
day = int(input())
# 报表打印的数字不对:请修正下面的代码
row = bookings[week]
print(f"Week {week}: {row}")
print(f"Weekend: {row[5:6]}")
print(f"Day {day}: {bookings[day - 1]}")
print(f"Booked: {bookings[day - 1, week - 1]}")
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
数据与图表中的所有课
自己练习: Python 在线编译器