Python – numpy.ndarray ベクトルや行列の基本操作

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 についても同様のルールで計算されますが、結果的に、行列とベクトルの積が返却されます。

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次