An example of how to upsample an array by repeating elements using numpy in python
Upsample an array using numpy function kron
Lets consider the following matrix of initial shape (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}
to upsample a matrix, a solution is to use the numpy function kron (which compute the Kronecker product):
a_upsampled = np.kron(a, np.ones((2,2)))
print(a_upsampled)
print(a_upsampled.shape)
returns
\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}
of shape (4, 4) (since (2,2)*(2,2) = (4,4)). Another example using np.ones((2,4) to compute the Kronecker product:
a_upsampled = np.kron(a, np.ones((2,4)))
print(a_upsampled)
print(a_upsampled.shape)
returns
\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}
of shape (4, 8) (since (2,2)*(2,4) = (4,8)).
Upsample an array using numpy function repeat
Another option is to use the numpy function repeat, for example:
a.repeat(2, axis=0).repeat(2, axis=1)
returns
\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}
of shape (4, 4).