numpy の ndarray はベクトルや行列の各種演算機能を備えており、機械学習など多様な分野でよく利用されます。
この記事では、ndarray の基本的な操作を紹介します。
目次
ゼロ値のベクトル・行列を生成
zeros
メソッドを呼び出すことで、要素ゼロのベクトルや行列を生成することができます。
import numpy as np
v0 = np.zeros(3)
print(v0)
# [0. 0. 0.]
m0 = np.zeros((2, 3))
print(m0)
# [[0. 0. 0.]
# [0. 0. 0.]]
後者の例は 2×3 の行列を生成しています。
リストからベクトル・行列を生成
array
メソッドを呼び出すことで、リストを基にベクトルや行列を生成することができます。
v1 = np.array([1, 2, 3])
print(v1)
# [1 2 3]
m1 = np.array([[1, 2, 3], [4, 5, 6]])
print(m1)
# [[1 2 3]
# [4 5 6]]
この例でも 2×3 の行列を生成しています。
ベクトル同士の演算
ベクトル同士の演算例です。
v1 = np.array([10, 20, 30])
print(v1)
# [10 20 30]
v2 = np.array([1, 2, 3])
print(v2)
# [1 2 3]
print(v1 + v2)
# [11 22 33]
print(v1 - v2)
# [ 9 18 27]
print(v1 * v2)
# [10 40 90]
print(v1 / v2)
# [10. 10. 10.]
# ベクトルの内積計算
print(np.dot(v1, v2))
# 140
四則演算記号でベクトル同士の演算を行うと、各要素ごとに演算処理が行われることになります。
ベクトルの内積を計算する場合は、dot
メソッドを利用します。
この例では (1 * 10) + (2 * 20) + (3 * 30) = 140 の結果が返却されています。
行列同士の演算
行列同士の演算例です。
m1 = np.array([[10, 20, 30], [40, 50, 60]])
print(m1)
# [[10 20 30]
# [40 50 60]]
m2 = np.array([[1, 2, 3], [4, 5, 6]])
print(m2)
# [[1 2 3]
# [4 5 6]]
print(m1 + m2)
# [[11 22 33]
# [44 55 66]]
print(m1 - m2)
# [[ 9 18 27]
# [36 45 54]]
print(m1 * m2)
# [[ 10 40 90]
# [160 250 360]]
print(m1 / m2)
# [[10. 10. 10.]
# [10. 10. 10.]]
行列においても、四則演算記号では要素同士の演算が行われます。
なお、dot 関数を用いると、行列積が計算されます。
m1 = np.array([[10, 20], [30, 40], [50, 60]])
print(m1)
# [[10 20]
# [30 40]
# [50 60]]
m2 = np.array([[1, 2, 3], [3, 4, 5]])
print(m2)
# [[1 2 3]
# [3 4 5]]
# 行列積
print(np.dot(m1, m2))
# [[ 70 100 130]
# [150 220 290]
# [230 340 450]]
行列とベクトルの演算
行列とベクトルの演算例です。
m = np.array([[1, 2, 3], [4, 5, 6]])
print(m)
# [[1 2 3]
# [3 4 5]]
v = np.array([1, 2, 3])
print(v)
# [1 2 3]
print(m + v)
# [[2 4 6]
# [5 7 9]]
print(m - v)
# [[0 0 0]
# [3 3 3]]
print(m * v)
# [[ 1 4 9]
# [ 4 10 18]]
print(m / v)
# [[1. 1. 1. ]
# [4. 2.5 2. ]]
print(np.dot(m, v))
# [14 32]
行列とベクトルの演算を行った場合、行列の各行に対してベクトル演算を行った結果が返却されます。
dot についても同様のルールで計算されますが、結果的に、行列とベクトルの積が返却されます。
コメント