私は0と1で塗りつぶされた2D numpy配列を持っています。それに1に隣接するすべての値が1に変換されるように変換したいと思います(したがって、タイトルの "汚染" 。例えばナンシー配列の値 "汚染"
:
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 1 0 0 0
0 0 0 0 0 0
になる:
import numpy as np
ones = []
ar = np.array([[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,1,0,0],
[0,0,0,0,1,0],
[0,0,1,0,0,0],
[0,0,0,0,0,0]])
n_row, n_col = ar.shape
for i in range(n_row):
for j in range(n_col):
if ar[i][j] == 1:
ones.append((i, j))
for x,y in ones:
# Replace neighboring values
:
0 0 0 0 0 0
0 0 1 1 1 0
0 0 1 1 1 1
0 1 1 1 1 1
0 1 1 1 1 1
0 1 1 1 0 0
Iは、すべての値をループ1Sを発見し、その後隣接する値を置換することによって、これを達成することができ
しかし、これは過剰です(特に私は本当に大きな配列に対処する予定だからです)。
すべての値をループせずにこれを達成する方法はありますか?
これはまさに私が探していたものです。ありがとう! – 3kt