NumPy:【0埋め,単位行列,対角行列】作成方法


サマリ

  • np.zeros、np.zeros_like
    • 0埋め、ゼロ埋め
  • np.ones
    • 1埋め
  • np.full
    • 全部埋め
  • np.eye
    • 単位行列
  • np.diag
    • 対角行列

前提

サンプルコード

np.zeros(ゼロ埋め)

import numpy as np
a = np.zeros((3,2))
print(a)
print(a.shape)
[[0. 0.]
 [0. 0.]
 [0. 0.]]
(3, 2)
  • (3,2)
    • 引数はタプル指定
    • この例だと3行2列の2次元ndarray(NumPy配列)=行列になる

np.zeros_like(ゼロ埋め)

データ作成

import numpy as np
a = np.arange(0, 10).reshape(2,5)
print(a)
print(a.shape)
[[0 1 2 3 4]
 [5 6 7 8 9]]
(2, 5)
  • 形状(2,5)のndarray(NumPy配列)を作成

元のndarrayを利用して作成

b = np.zeros_like(a)
print(b)
print(b.shape)
[[0 0 0 0 0]
 [0 0 0 0 0]]
(2, 5)
  • np.zeros_like(…)
    • 引数に指定したNumPy配列と同じ形の配列になる
    • もちろん中身はすべてゼロ
    • 形状は元のndarrayと同じ(2,5)になっている

np.ones(1埋め)

import numpy as np
a = np.ones((2,2,2))
print(a)
[[[1. 1.]
  [1. 1.]]

 [[1. 1.]
  [1. 1.]]]
  • (2,2,2)
    • 引数はタプル指定
    • この例では3次元のndarray(NumPy配列)を作成

np.full(指定した数字で埋める)

import numpy as np
a = np.full((3,5), 10)
print(a)
print(a.shape)
[[10 10 10 10 10]
 [10 10 10 10 10]
 [10 10 10 10 10]]
(3, 5)
  • np.full(…)
    • 引数の条件の通り指定した数字で埋めたndarray(NumPy配列)を返す
    • (3,5)
      • 作成するndarrayの形状
      • 作成されたndarrayの形状は(3,5)になっている
    • 10
      • 埋め込む数字を指定
      • 10で満たす

np.eye(単位行列)

import numpy as np
a = np.eye(5)
print(a)
print(a.shape)
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
(5, 5)
  • 単位行列
    • 2次元(行と列)
    • 左上から対角方向に1が並ぶ
    • それ以外はゼロ
  • np.eye(…)
    • 単位行列を作成
    • 引数の数1が並ぶ
    • 行と列が引数の値になる
      • 形状は(5,5)になる

np.diag(対角行列)

データ作成

import numpy as np
a = np.arange(24).reshape(4,6)
print(a)
print(a.shape)
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]
(4, 6)
  • 形状(4,6)のndarray(NumPy配列)を作成
  • 対角成分は0,7,14,21であることに注目

対角成分の取り出し

b = np.diag(a)
print(b)
print(b.shape)
[ 0  7 14 21]
(4,)
  • 対角成分が0,7,14,21が取り出された
  • 形状は1次元の(4, )になっている

対角行列の作成

c = np.diag(b)
print(c)
print(c.shape)
[[ 0  0  0  0]
 [ 0  7  0  0]
 [ 0  0 14  0]
 [ 0  0  0 21]]
(4, 4)
  • 引数の値が対角成分、それ以外が0の対角行列を作成
  • 形状は(4,4)の正方行列になる
  • 引数は1次元ndarray(Numpy配列)の他、リストやタプルでも対角行列を作成できる


Posted by futa