Menu
CoddyTech

インデックス指定とスライス

CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 8/60。

配列はリストと同じように、0からインデックスが始まります。ピアノの練習をした5日間の練習時間(分):

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]

2D配列では、1組の角括弧内に行と列を指定し、行を先に指定します。stockの各行は店舗、各列は商品を表します。

3行4列の数値のグリッド。1行目2列目の4が入ったセルは最も濃く色付けされ、6、3、8が入った3列目全体も色付けされている

stock = np.array([[5, 8, 2, 6], [9, 1, 4, 3], [7, 0, 6, 8]])
print(stock[1, 2])  # 1つの値
print(stock[0])     # 行全体
print(stock[:, 3])  # 列全体

これは次のように出力されます:

4
[5 8 2 6]
[6 3 8]

行の位置では、コロンはすべての行を意味し、0:2のようなスライスはその一部を意味します。したがって、data[:, column]はすべてのサンプルに対する1つの特徴量です。

challenge icon

チャレンジ

簡単

ホテルのレポートに誤りがあります。bookingsは週ごとに1行、曜日ごとに1列で、月曜日から日曜日まで並んでいます。プログラムは、1から数えた週と曜日を読み取ります。

各行にバグが1つあります。ラベルに合うように修正してください。

  • Week:その週全体
  • Weekend:その週の最後の2日分のスライス
  • Day:その曜日の、すべての週の分
  • Booked:その1日の分

週が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週間分(第1週から第4週)、
# 各列が1日分(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]}")
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

データとプロットのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ