Comment sur-échantillonner un tableau (ou matrice) en répétant des éléments en utilisant numpy en python ?

Published: 18 décembre 2020

Tags: Python; Numpy;

DMCA.com Protection Status

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).

Références