numpy – diag、diagflat、tri、tirl、triu の使い方

目次

概要

NumPy の指定した行列から上三角行列、下三角行列、対角行列を作成する及び対角成分を取得する関数を解説します。

関数一覧

numpy.diag

指定した配列が2次元配列の場合、対角成分を1次元配列として返します。指定した配列が1次元配列の場合、その配列を対角成分とした2次元配列を返します。

numpy.diag(v, k=0)
引数
名前 デフォルト値
v array_like
v が2次元配列の場合、対角成分を1次元配列として返します。v が1次元配列の場合、その配列を対角成分とした2次元配列を返します。
k int 0
対角線の位置。0 は主対角線を指し、正の値は上の対角線を指し、負の値は下の対角線を指します。
返り値
名前 説明
out 指定した配列指定した配列が2次元配列の場合、対角成分を1次元配列。指定した配列が1次元配列の場合、その配列を対角成分とした2次元配列。

引数 k で指定する対角線の位置

サンプルコード

In [1]:
import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

b = np.diag(a)
print(b)
[1 5 9]
In [2]:
b = np.diag(a, k=1)
print(b)
[2 6]
In [3]:
b = np.diag(a, k=-1)
print(b)
[4 8]
In [4]:
a = np.array([1, 5, 9])

b = np.diag([1, 5, 9])
print(b)
[[1 0 0]
 [0 5 0]
 [0 0 9]]

numpy.diagflat

指定した1次元配列を対角成分とした2次元配列を返します。

numpy.diagflat(v, k=0)
引数
名前 デフォルト値
v array_like
対角成分として設定する1次元配列
k int 0
対角線の位置。0 は主対角線を指し、正の値は上の対角線を指し、負の値は下の対角線を指します。
返り値
名前 説明
out 指定した1次元配列を対角成分とした2次元配列

サンプルコード

In [5]:
a = np.array([1, 5, 9])

b = np.diagflat([1, 5, 9])
print(b)
[[1 0 0]
 [0 5 0]
 [0 0 9]]
In [6]:
b = np.diagflat(a, k=1)
print(b)
[[0 1 0 0]
 [0 0 5 0]
 [0 0 0 9]
 [0 0 0 0]]
In [7]:
b = np.diag(a, k=-1)
print(b)
[[0 0 0 0]
 [1 0 0 0]
 [0 5 0 0]
 [0 0 9 0]]

numpy.tri

下三角成分が 1、上三角成分が 0 の2次元配列を返します。

numpy.tri(N, M=None, k=0, dtype=<class 'float'>)
引数
名前 デフォルト値
N int
2次元配列の行数
M int None
2次元配列の列数
k int 0
対角線の位置。0 は主対角線を指し、正の値は上の対角線を指し、負の値は下の対角線を指します。
dtype dtype
返される配列の型
返り値
名前 説明
tri 下三角成分が 1、上三角成分が 0 の2次元配列を返します。

サンプルコード

In [8]:
a = np.tri(3, dtype=int)
print(a)
[[1 0 0]
 [1 1 0]
 [1 1 1]]
In [9]:
a = np.tri(3, 4, dtype=int)
print(a)
[[1 0 0 0]
 [1 1 0 0]
 [1 1 1 0]]
In [10]:
a = np.tri(3, k=1, dtype=int)
print(a)
[[1 1 0]
 [1 1 1]
 [1 1 1]]
In [11]:
a = np.tri(3, k=-1, dtype=int)
print(a)
[[0 0 0]
 [1 0 0]
 [1 1 0]]

numpy.tril

指定した2次元配列の上三角成分を 0 とした配列を返します。

numpy.tril(m, k=0)
引数
名前 デフォルト値
m array_like, shape (M, N)
2次元配列
k int 0
対角線の位置。0 は主対角線を指し、正の値は上の対角線を指し、負の値は下の対角線を指します。
返り値
名前 説明
tril 配列と同じ形状と型を持つ、上三角成分を 0 とした配列

サンプルコード

In [12]:
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

b = np.tril(a)
print(b)
[[1 0 0]
 [4 5 0]
 [7 8 9]]
In [13]:
b = np.tril(a, k=1)
print(b)
[[1 2 0]
 [4 5 6]
 [7 8 9]]
In [14]:
b = np.tril(a, k=-1)
print(b)
[[0 0 0]
 [4 0 0]
 [7 8 0]]

numpy.triu

指定した2次元配列の下三角成分を 0 とした配列を返します。

numpy.triu(m, k=0)
引数
名前 デフォルト値
m array_like, shape (M, N)
2次元配列
k int 0
対角線の位置。0 は主対角線を指し、正の値は上の対角線を指し、負の値は下の対角線を指します。
返り値
名前 説明
tril 配列と同じ形状と型を持つ、下三角成分を 0 とした配列

サンプルコード

In [15]:
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

b = np.triu(a)
print(b)
[[1 2 3]
 [0 5 6]
 [0 0 9]]
In [16]:
b = np.triu(a, k=1)
print(b)
[[0 2 3]
 [0 0 6]
 [0 0 0]]
In [17]:
b = np.triu(a, k=-1)
print(b)
[[1 2 3]
 [4 5 6]
 [0 8 9]]

コメント

コメントする

目次