レッスン1 / 3問目

『ndarrayの形状』

shape

このレッスンではndarrayの形状(行数、列数)を取得するプロパティについて学習していきましょう。ndarrayの形状を取得するにはshapeプロパティを使います。

  1. arr = np.array([[1, 2, 3],
  2.     [4, 5, 6]],)
  3. print(arr.shape)
(2, 3)

このようにshapeを使えば(行, 列)という形で形状を取得することができます。

ndim

また、ndimプロパティを使えば多次元配列の次元数を取得することができます。

  1. print(arr.ndim)
2    # 次元数

reshape

続いてこれらの形状を変更する方法を見ていきましょう。ndarrayの形状を変更するにはreshape()メソッドを使用します。以下のようにreshape()の引数に(行, 列)の形で形状を指定します。

  1. arr = np.array([1, 2, 3, 4, 5, 6])
  2. new_arr = arr.reshape((2, 3))
  3. print(new_arr)
[[1 2 3] [4 5 6]] # 2行3列に変更される

このようにreshape()メソッドを使うことで簡単に形状を変更することができますが、reshapeで形状を変更した後の配列と元の配列は要素数が同じである必要がある点に注意しましょう。上記の例では配列arrの要素数が6であるため「arr.reshape((2, 3))」でreshapeすることができています。(2 × 3 = 6となるため)
ちなみに要素数が異なる場合はValueErrorとなります

しかし、いちいち最終的な要素数を計算するのも面倒です。そのため実はreshapeでは引数に「-1」を指定することで自動的に要素数に合わせた配列を生成してくれます。
以下のように記述します。

  1. arr = np.array([1, 2, 3, 4, 5, 6])
  2. new_arr = arr.reshape((2, -1))
  3. print(new_arr)
[[1, 2, 3], [4, 5, 6]] # 2 × 3 の形状に自動的に変更

上記の例では要素数が6個の配列を形状変換しているためreshapeの引数に2と-1を渡すことで自動的に2×3の配列が生成されます。

今回のレッスンは以上となります。

ではndarrayの形状を操作する練習問題にチャレンジしてみましょう。

まとめ

shape形状を持つプロパティ
ndim次元数を持つプロパティ
reshape形状を変更した新たな配列を生成するメソッド

Lesson1

arrの形状を取得し出力してください。

Lesson2

arrの形状を3行2列に変更した配列を出力してください。

Last updated:2019/10/18

(2, 3)
[[1 2]
 [3 4]
 [5 6]]
  1. import numpy as np

  2. arr = np.array([[1, 2, 3],
  3. [4, 5, 6]])

  4. # arrの形状を取得し出力してください。

  5. print(arr.shape)

  6. # arrの形状を3行2列に変更した配列を出力してください。

  7. print(arr.reshape(3, -1))
main.py
設定
g
n
i
d
a
o
L