Suppose I am coding in python.

Then one can do e.g. something like this:

import numpy as np
A = np.random.rand((6,6))
# Lets reshape it
A_new = A.reshape(-1,3)

So it went from 2D array (matrix) to a 2D array with six 12 rows and three columns.

How would one write the re-shape operation formally in mathematical notation? Transpose is obviously easy, but is there a parallel for reshapes?

$$\mathbf{A} \in \mathbb{R}^{6\times6} \rightarrow \mathbf{A} \in \mathbb{R}^{12 \times 3}$$



The operation $\mathbb{R}^{n\times m}\to\mathbb{R}^{nm}$ is called vectorization and often is denoted with $\mathop{\mathrm{vec}}()$. Creating a matrix from vector is an inverse $\mathop{\mathrm{vec}^{-1}}()$. When one can't deduce what are the dimensions of new matrix, they can be given as sub-indices: $\mathop{\mathrm{vec}^{-1}_{3,4}}(\mathbf v)$ will produce the matrix $3\times 4$. To sum up, you can write: $$ \mathop{\mathrm{vec}^{-1}_{12,3}}\circ\mathop{\mathrm{vec}}: \mathbb{R}^{6\times 6}\to\mathbb{R}^{12,3},\\ A'= \mathop{\mathrm{vec}^{-1}_{12,3}}(\mathop{\mathrm{vec}}(A)). $$

However, I need to mention, that it isn't a widely used notation, so you are better to introduce it formally beforehand.

Note. There is also a term tensor reshaping, but it's usually referred to an operation of combining dimensions (so no dimension is needed to be a composite integer).

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.