すべての隣接セルの値を足し合わせる

Counting Neighbors in Matrix – Conway Game of Life – StackOverflow

numpy.ndarrayに於ける全ての隣接セルの値を足し合わせたい.
要は,コンボリューションの話.

「numpy.convolve」は1Dしか処理できないので,
「scipy.signal.convolve」を使う.

from scipy import signal

kernel = np.ones((3, 3), dtype=np.int8)
kernel[1, 1] = 0
signal.convolve(board, kernel, 'same')

array([[2, 2, 2],
[3, 3, 3],
[1, 2, 1]])

隣接セルの畳み込みは,元のマトリックスから
重畳する様なサブアレイを作る事でも計算できる筈.

つまり,
「np.lib.stride_tricks.as_strided」と
「np.sum」或いは「np.einsum」を使って同じ事ができると思う.

ちょっと考えてみたけど,うまくできなかったので略.

カテゴリー: 未分類 パーマリンク

すべての隣接セルの値を足し合わせる への1件のフィードバック

  1. ピンバック: 隣接セルの合計(コンボリューション) | 粉末@それは風のように (日記)

コメントは受け付けていません。