Menu
CoddyTech

配列の形状変更

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

ある店の12か月分の売上は、1つのフラットな配列として届きます。これを3か月ずつの4つの四半期にまとめると、新たな疑問が生まれます。

12か月分の売上を並べた列 5 8 6 9 12 10 14 15 11 7 6 9 が、同じ順序で1行につき3か月ずつ、Q1からQ4のラベルが付いた4行のグリッドに折りたたまれている

.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() は、どのようなテーブルも1つのフラットな配列に戻します。この章は、同じようにラウンドに分けたサイコロゲームで締めくくります。

challenge icon

チャレンジ

簡単

ある読者が、月曜日から日曜日までの読書時間(分)を3週間分、一次元配列 minutes に記録しました。プログラムは週番号 week(1、2、または3)を読み取ります。

  1. minutes を、1週間につき1行の 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オンラインコンパイラ