やましなぶろぐ

numpyの2次正方行列の対角成分に値を代入する

replace diag value : numpy 2d square matrix

🕒 Last mod: 2020-10-19


1. 2次正方行列の対角成分に値を代入したい

正方形画像の対角成分に白い斜線を引きたい。

簡単な処理だけれどさっと適切なコードが出てこなかった。

この記事では調べて対応したコードを共有します。

2. 対応したコード : imgarray[range(64), range(64)] = 255

64×64の画像で対応したコードは下記。

code.py
imgarray[range(64), range(64)] = 255

以下で実際に試してみます。

2.1. サンプル画像作成

乱数を使用してサンプル画像を作成します。

平均126、標準偏差30の正規分布に従う乱数の64×64の白黒画像を作成します。

2.2. サンプルプログラム

対角成分に255を代入します。

example.py
import numpy as np
from PIL import Image

# create image
imgarray =  np.random.normal(
        126,
        30,
        64 * 64,
).astype(
        np.uint8
).reshape(
        (64, 64)
)

# replace diag value
imgarray[range(64), range(64)] = 255

# save to jpg
img = Image.fromarray(imgarray)
img.save("diag255.jpg")
diag255.jpg
diag255.jpg

対角線上に白い線が引かれていることが確認できます。