IndexError: допустимыми являются только целые числа, срезы (`:`), многоточие (`...`), numpy.newaxis (`None`) и целые или логические массивы. - PullRequest
0 голосов
/ 17 мая 2019

Я реализую эту функцию свертки.почему я получаю следующую ошибку, связанную с индексами.

IndexError: только целые числа, срезы (:), многоточие (...), numpy.newaxis (None) и целые или логические массивыдействительные индексы

```
Gx = np.array([[-1, 0, 1],[-2, 0, 2],[-1, 0, 1]])
Gy = np.array([[-1, -2, -1],[0, 0, 0],[1, 2, 1]])

def convolution(X, F):
    X_height = X.shape[0]
    X_width = X.shape[1]
    F_height = F.shape[0]
    F_width = F.shape[1]

    H = (F_height - 1) / 2
    W = (F_width - 1) / 2
    out = np.zeros((X_height, X_width))
    for i in np.arange(H, X_height-H):
        for j in np.arange(W, X_width-W):
            sum = 0
          for k in np.arange(-H, H+1):
                for l in np.arange(-W, W+1):
                    a = X[i+k, j+l]
                    w = F[H+k, W+l]
                    sum += (w * a)
            out[i,j] = sum
     return out

img_x = convolution(imgray, Gx) / 8
img_y = convolution(imgray, Gy) / 8
IndexError                                Traceback (most recent call last)
<ipython-input-110-b7121e4faef4> in <module>
----> 1 img_x = convolution(imgray, Gx) / 8
   2 img_y = convolution(imgray, Gy) / 8

<ipython-input-109-d5d5936a796a> in convolution(X, F)
  23                 for l in np.arange(-W, W+1):
  24                     #get the corresponding value from image and filter
---> 25                     a = X[i+k, j+l]
  26                     w = F[H+k, W+l]
  27                     sum += (w * a)


...