Drop hier links of afbeeldingen om ze aan de editor toe te voegen.
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:
- de tabel $$A$$ zoals hierboven gedefinieerd
- de tabel $$F$$ zoals hierboven gedefinieerd
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.]]