numpyを使うなら、こうです。
python
1>>> import numpy as np
2>>>
3>>> a = np.zeros(16, dtype=int).reshape((4,4))
4>>> a[0, 2] = 1
5>>> a[1, 2] = 1
6>>> a[2, 0] = 1
7>>> a[2, 1] = 1
8>>> a[2, 2] = 1
9>>> a[3, 2] = 1
10>>> print(a)
11[[0 0 1 0]
12 [0 0 1 0]
13 [1 1 1 0]
14 [0 0 1 0]]
15>>> v = (a[1:,:]&a[:-1,:]).sum()
16>>> h = (a[:,1:]&a[:,:-1]).sum()
17>>> print(v+h)
185
やっていることの垂直方向を詳しく見ると、
python
1>>> print(a)
2[[0 0 1 0]
3 [0 0 1 0]
4 [1 1 1 0]
5 [0 0 1 0]]
6>>> print(a[1:,:])
7[[0 0 1 0]
8 [1 1 1 0]
9 [0 0 1 0]]
10>>> print(a[:-1,:])
11[[0 0 1 0]
12 [0 0 1 0]
13 [1 1 1 0]]
14>>> print((a[1:,:]&a[:-1,:]))
15[[0 0 1 0]
16 [0 0 1 0]
17 [0 0 1 0]]
18>>> v = (a[1:,:]&a[:-1,:]).sum()
19>>> print(v)
203
水平方向も同じような感じです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/19 15:47