NumPy


NumPyはPythonで数値計算を効率的に行うためのライブラリです。

NumPyのインストール

NumPyはコマンドライン上でpipコマンドを使ってインストールを行います。

$ pip install numpy

NumPyのインポート

Pythonスクリプト内でNumPyを使うには、スクリプトの先頭で次のimport文を使用します。

import numpy as np

配列の作成

NumPyの配列を作成するには、np.array()メソッドに対してPythonのリストを渡します。

x = np.array([1, 2, 3])

print(x)
# [1 2 3]

リストのリストを渡すことで、二次元配列(行列)やより高次元の配列を作成することもできます。二次元配列の場合、内側の各リストが行列の行となり、それらの同じ位置にある数字の並びが列になります。

x = np.array([[1, 2], [3, 4]])

print(x)
# [[1 2]
#  [3 4]]

ちなみに、一次元の配列は、定義した時点においては、それが行ベクトル(1 x n行列)であるか列ベクトル(n x 1行列)であるかは意識されません。後述する内積等を計算する場面においては、もう一方の値に合わせて行か列かが自動的に選択されます。明示的に1 x n行列やn x 1行列を作成したい場合は、次のように記述します。

参考: https://stackoverflow.com/questions/17428621/python-differentiating-between-row-and-column-vectors

x = np.array([[1, 2, 3]])

print(x)
# [[1 2 3]]
x = np.array([[1], [2], [3]])

print(x)
# [[1]
#  [2]
#  [3]]

配列の四則演算

配列同士の四則演算を行うと、対応した配列の各要素に対して四則演算をした結果を持つ配列が返ります。

x = np.array([1, 2, 3])
y = np.array([2, 4, 6])

print(x + y)
# [3 6 9]

print(x - y)
# [-1 -2 -3]

print(x * y)
# [ 2  8 18]

print(x / y)
# [0.5 0.5 0.5]

配列の四則演算は、配列の要素の数が一致していることが期待されます。ただし、単一の数値(スカラー値)や要素数の少ない配列が渡された場合でも、 ブロードキャスト という機能により要素が複製されて計算が行われます。

x = np.array([[1, 2], [3, 4]])
y1 = 2
y2 = np.array([5, 6])

print(x * y1)
# [[2 4]
#  [6 8]]

print(x * y2)
# [[ 5 12]
#  [15 24]]

配列の内積

np.dot()メソッドを利用することで、配列の内積を計算することができます。

x = np.array([1, 2, 3])
y = np.array([2, 4, 6])

print(np.dot(x, y))
# 28

行列の場合は、前の行列の列数と後の行列の行数が一致している必要があります。次の例では、2 x 3行列と3 x 2行列の内積を計算して、結果として2 x 2行列が得られています。

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

print(np.dot(A, B))
# [[22 28]
#  [49 64]]

配列の次元数の確認

np.ndim()関数を利用することで、配列の次元数を取得することができます。

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

print(np.ndim(A))
# 2

配列の各次元の大きさの確認

多次元配列の各次元の大きさを取得するには、配列のインスタンス変数であるshapeを参照します。次元の大きさは、二次元(行列)であれば、行数と列数に該当します。

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

print(A.shape)
# (2, 3)