Python NumPy / ndarray の基礎 #2
株式会社リュディアです。今回も NumPy についてまとめていきます。
前回までの NumPy / ndarray の基礎についてのまとめへのリンクは以下を参考にしてください。
NumPy の本質は型付きのN次元配列オブジェクトを提供により行列演算を高速化することにあります。Python は動的型付け言語であるのでプログラミングは柔軟に行えますが動作速度が遅くなります。NumPy は特別な N次元配列オブジェクト型の上で高速に行列演算を行うためのデータ型と演算ライブラリを提供します。
最初にN次元配列オブジェクトについてまとめてみます。numpy.ndarray と呼ばれる型です。numpy の N-dimensional array という意味です。NumPy の公式ドキュメントの以下のページを丁寧に見ていきます。
まず numpy.ndarray 型は Python のリストやタプルとは完全に別物であることを理解してください。配列ではありますが以下のような Python の標準型にはない厳しい制約があります。
A. 配列のすべての要素が同じ型であること
B. 次元毎に要素数は一定であること
A については静的な型付きの言語では自然なことです。一方でPython のような動的型付けの言語ではリストの要素ごとに異なるデータ型を格納することができますね。これが1つめの制約です。
B についても静的な型付きの言語で配列を使う場合には自然なことです。具体例としては縦、横 10 x 10 の2次元配列を定義することは可能ですが、行ごとに列数が異なる2次元配列は定義できないですよね。
最初に厳しい制限と書きましたが、動的型付き言語の Python にとって厳しい制限であるだけで静的な型付きの言語では自然なレベルの制限です。
では具体的なコードを見てみましょう。まず以下のコードを見てください。
import numpy
x = numpy.array([[1, 2, 3], [4, 5, 6]], numpy.int32)
print(type(x))
#
# <class 'numpy.ndarray'>
#
2行3列の行列
1 2 3
4 5 6
を numpy で定義されている dtype : int32 、つまり符号あり32ビット整数型で定義、初期化し、変数 x に設定しています。print 文で x の型を表示すると numpy の ndarray のクラスであると表示されてますね。
ここで numpy というライブラリですが関連する関数を呼ぶときに毎度 numpy と書くのも大変なので以下のように記載することが多いです。
import numpy as np # np という名前で import numpy を行う。
これにならって先ほどコードを書き替えてみましょう。
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
print(type(x))
#
# <class 'numpy.ndarray'>
#
今回は NumPy の基本となる numpy.ndarray の導入でした。
NumPy / ndarray の基礎に関するまとめの続きは以下からどうぞ。
では、ごきげんよう。