パッケージscipyには、バイナリ構造(タクシー(2,1)やチェス盤(2,2)など)を定義する関数があります。
import numpy
from scipy import ndimage
a = numpy.zeros((6,6), dtype=numpy.int)
a[1:5, 1:5] = 1;a[3,3] = 0 ; a[2,2] = 2
s = ndimage.generate_binary_structure(2,2) # Binary structure
#.... Calculate Sum of
result_array = numpy.zeros_like(a)
私が欲しいのは、与えられた構造でこの配列のすべてのセルを反復することです。次に、空の配列でインデックス付けされた現在のセル値に関数を追加します(関数の合計の例)。これは、バイナリ構造内のすべてのセルの値を使用します。
例えば:
array([[0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 0],
[0, 1, 2, 1, 1, 0],
[0, 1, 1, 0, 1, 0],
[0, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 0]])
#配列a。セル1、2の値は現在1です。構造体sと、結果の配列(result_array)の値を合計するなどの関数の例を指定すると、7(または現在のセル値が除外されている場合は6)になります。
誰かがアイデアを思いついた?