Exemple de comment sur-échantillonner un tableau (ou matrice) en répétant des éléments en utilisant numpy en python
Sur-échantillonner un tableau avec numpy en utilisant la fonction kron
Soit la matrice suivante de dimension (2,2):
import numpy as np
a = np.array([[0,1], [2,3]])
print(a)
print(a.shape)
\begin{equation}
\left( \begin{array}{ccc}
0 &1 \\
2 & 3
\end{array}\right)
\end{equation}
pour sur-échantillonner cette matrice, une solution est d'utiliser la fonction numpy kron (which compute the Kronecker product):
a_upsampled = np.kron(a, np.ones((2,2)))
print(a_upsampled)
print(a_upsampled.shape)
donne
\begin{equation}
\left( \begin{array}{ccc}
0 & 0 & 1 & 1 \\
0 & 0 & 1 & 1 \\
2 & 2 & 3 & 3 \\
2 & 2 & 3 & 3
\end{array}\right)
\end{equation}
de dimension (4, 4) (car (2,2)*(2,2) = (4,4)). Un autre exemple en utilisant np.ones((2,4) pour calculer le produit de Kronecker:
a_upsampled = np.kron(a, np.ones((2,4)))
print(a_upsampled)
print(a_upsampled.shape)
donne
\begin{equation}
\left( \begin{array}{ccc}
0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
2 & 2 & 2 & 2 & 3 & 3 & 3 & 3 \\
2 & 2 & 2 & 2 & 3 & 3 & 3 & 3
\end{array}\right)
\end{equation}
de dimension (4, 8) (car (2,2)*(2,4) = (4,8)).
Sur-échantillonner un tableau en utilisant le fonction numpy repeat
Une autre solution est d'uiliser la fonction repeat, exemple:
a.repeat(2, axis=0).repeat(2, axis=1)
donne
\begin{equation}
\left( \begin{array}{ccc}
0 & 0 & 1 & 1 \\
0 & 0 & 1 & 1 \\
2 & 2 & 3 & 3 \\
2 & 2 & 3 & 3
\end{array}\right)
\end{equation}
de dimension (4, 4).