Gegeven is een NumPy-tabel $$A$$ met $$M$$ rijen en $$N$$ kolommen ($$M, N > 0$$), bestaande uit reƫle getallen. Daarnaast is een tweede NumPy-tabel $$F$$ gegeven, bestaande uit $$2n+1$$ rijen en $$2n+1$$ kolommen. Op basis van deze twee tabellen, wordt een nieuwe tabel $$B$$ geconstrueerd, bestaande uit $$M$$ rijen en $$N$$ kolommen. Je mag aannemen dat $$M > 2n + 1$$ en $$N > 2n + 1$$. Het element op rij $$s$$ en op kolom $$t$$ van de tabel $$B$$, namelijk $$B_{st}$$, vind je via:

  • indien $$s \ge n $$ en $$t \ge n$$ en $$s < M - n$$ en $$t < N - n$$: $$ B_{st} = \sum_{i=-n}^{n} \sum_{j=-n}^{n} F_{i+n,j+n}A_{s+i,t+j} $$
  • in alle andere gevallen: $$ B_{st} = 0 $$
  • Op basis van deze tabel $$B$$, bouwen we een nieuwe tabel $$C$$ die ontstaat door in de tabel $$B$$ de rijen 0 t.e.m. $$n-1$$, en $$M-n$$ t.e.m. $$M-1$$ te schrappen, alsook de kolommen rangnummers 0 t.e.m. $$n - 1$$ en $$N-n$$ t.e.m. $$N-1$$ te verwijderen (we verwijderen m.a.w. de eerste $$m$$ rijen, de laatste $$m$$ rijen, de eerste $$n$$ kolommen en ook de laatste $$n$$ kolommen).


    Schrijf een functie filter() met als argumenten: Het resultaat van de functie is de NumPy-tabel $$C$$.

    Voorbeeld

    a = [[1.0, 2.0, 3.0, 4.0, 5.0], [6.0, 7.0, 8.0, 9.0, 10.0], [11.0, 12.0, 13.0, 14.0, 15.0], [16.0, 17.0, 18.0, 19.0, 20.0]]
    f = [[-1.0, 0.0, 1.0], [-1.0, 2.0, 1.0], [-1.0, 0.0, 1.0]]
    filter(np.array(a), np.array(f)) = 
    [[ 20.  22.  24.]
     [ 30.  32.  34.]]