У меня есть пустой массив:
x = np.random.rand(4, 5)
Я хотел бы создать массив, показывающий, сколько соседних значений существует для каждого значения в исходном массиве .Под соседним я имею в виду:
example=np.array([[0,1,0,0,0],
[1,2,1,0,0],
[0,1,0,0,0],
[0,0,0,0,0]])
plt.imshow(example)
Значение в позиции [1][1]
имеет 4 соседей (желтый квадрат имеет 4 смежные зеленые ячейки).
Решение, которое работает:
x = np.random.rand(4, 5)
mask = 4*np.ones(x.shape, dtype=int)
mask[0][:]=3
mask[-1][:]=3
for each in mask: each[0]=3
for each in mask: each[-1]=3
mask[0][0]=2
mask[0][-1]=2
mask[-1][0]=2
mask[-1][-1]=2
mask
становится:
array([[2, 3, 3, 3, 2],
[3, 4, 4, 4, 3],
[3, 4, 4, 4, 3],
[2, 3, 3, 3, 2]])
Теперь я пытаюсь создать тот же массив с try-except
:
x = np.random.rand(4, 5)
numofneighbours=[]
for index, each in enumerate(x):
row=[]
for INDEX, EACH in enumerate(each):
c=4
try:ap[index+1][INDEX]
except:c-=1
try:ap[index][INDEX+1]
except:c-=1
try:ap[index-1][INDEX]
except:c-=1
try:ap[index][INDEX-1]
except:c-=1
row.append(c)
numofneighbours.append(row)
numofneighbours=np.asarray(numofneighbours)
Задание результирующего массива numofneighbours
:
array([[4, 4, 4, 4, 3],
[4, 4, 4, 4, 3],
[4, 4, 4, 4, 3],
[3, 3, 3, 3, 2]])
, который не равен mask
, как я ожидал.
Что такоеЯ делаю что-то не так, или как мне использовать try-кроме целей, описанных выше?