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」を使って同じ事ができると思う.
ちょっと考えてみたけど,うまくできなかったので略.
ピンバック: 隣接セルの合計(コンボリューション) | 粉末@それは風のように (日記)