ライフゲーム / Python / 全セルのムーア近傍の和を求める / scipy.signal.convolve2d()

scipy.signal.convolve2d()boundary=オプションで境界条件を指定すればわざわざ一回り大きい排列を作る必要はなかった。

import numpy as np
from scipy.signal import convolve2d

# この排列aを現世代排列とする。
numOfRows, numOfCols = 5, 10
a = np.random.randint(0, 2, [numOfRows, numOfCols], dtype="uint8")

# 現世代排列の全セルのムーア近傍の和を求める。境界条件は上下左右のつながったトーラスとする。
moore = convolve2d(a, [[1,1,1],
                       [1,0,1],
                       [1,1,1]], boundary="wrap", mode="same")
    
print(a)
print(moore)

実行結果:
f:id:ti-nspire:20181015194254p:plain:w300