我有一個2D numpy數組,填充0和1,我想對它進行轉換,以便將鄰近1的每個值轉換爲1(因此標題中的「污染」) 。Numpy數組值「污染」
例如:
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
變爲:
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
我可以通過所有的值循環,找到1S,然後更換相鄰值實現這一點:
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
但這似乎矯枉過正(特別是因爲我打算處理真正的大型數組)。
有沒有辦法實現這一點,而不必循環所有的值?
這正是我一直在尋找的,謝謝! – 3kt