レッスン2 / 2問目

『ndarrayについて』

このレッスンではndarrayについて学習していきましょう。

前回のレッスンではnp.array()でnumpyの配列を作成しました。このnp.array()で生成されるnumpyの配列は「ndarray」といい、numpy.ndarrayクラスから生成されるデータ構造です。念のためnp.array()で作成した配列のtypeを確認しておきましょう。

  1. import numpy as np
  2. arr = np.array([3, 6, 9])
  3. print(type(arr))
< class 'numpy.ndarray' >

上記のようにnp.array()により生成した配列はndarrayという型を持つことがわかります。ちなみにndarrayはN次元配列という意味です。(dはdimension(次元)、arrayは(配列)という意味です。)

本レッスンではこのndarrayについて以下の2点について取り上げていきたいと思います。

  • ndarrayでは変数の型を明示する
  • 次元ごとに要素数が同じでなければならない

この2点について説明していきます。

- ndarrayでは変数の型を宣言する -

「変数の型を明示する」とはどういうことでしょうか。これを説明するためにC言語を例に出しますが、C言語について知っている必要はありません。

普段みなさんがPythonで変数を宣言する際は、以下のように宣言するでしょう。

  1. num = 5

このpythonでの変数宣言をC言語で書く場合は以下のように変数の型を明示する必要があります。

  1. int num = 5;

この例のC言語のように変数宣言時に型を指定することを「静的型付け」といいます。それとは逆にpythonのように変数宣言時に型を明示せずに、処理のたびに型を自動判別することを「動的型付け」といいます。

ではこの静的型付けと動的型付けではなにが違うのでしょうか。実は速度に差がでるのですが、なぜかというと動的型付けでは演算のたびに型判定がはいるためです。つまり処理が増えれば増えるほど速度も遅くなるということです。

そしてndarrayもC言語と同じように型を明示します。
これがpythonのリストよりもndarrayの方が速度が何倍も速い理由の一つであるといえます。

- 次元ごとに要素数が同じでなければならない -

これまで学習してきた2次元リストでは各次元の要素数が違っていてもリストとして扱うことができましたが、ndarrayでは各次元(行と列)の要素数が同じである必要があります。以下の2次元ndarrayの例では、各配列の要素数が異なるためndarrayにすることができず。listとなってしまっています。

  1. import numpy as np
  2. arr = np.array([[
  3.     [1, 2, 3],
  4.     [4, 5]
  5. ])
  6. print(arr)
[list([1, 2, 3]) list([4, 5])

この例では2次元目の要素数が異なるため、ndarrayを生成できずlist型となっています。

このようにndarrayでは各次元の要素数が同じでないといけないというお約束がありますので注意しましょう。

ndarray

これでndarrayの説明は以上となります。

では今回の練習問題では二次元のndarrayを作成してみましょう。

Lesson1

以下の二次元配列を作成し出力してください。

[[1 2 3] [4 5 6]]

Last updated:2019/10/28

[[1 2 3]
 [4 5 6]]
  1. # 指定した二次元配列を作成し出力してください

  2. import numpy as np

  3. arr = np.array([[1, 2, 3],[4, 5, 6]])
  4. print(arr)
main.py
設定
g
n
i
d
a
o
L