reshape#
Purpose#
Reshapes a dataframe, matrix or string array.
Format#
- y = reshape(x, r[, c])#
- Parameters:
x (NxK matrix) – data
r (scalar) – new row dimension. If -1 is passed in, the row dimension will be inferred based on the size of the input data and the column dimension.
c (scalar) – Optional input, new column dimension. If
c
is not passed in a default value of 1 will be used. If -1 is passed in, the column dimension will be inferred based on the size of the input data and the row dimension.
- Returns:
y (RxC matrix) – created from the elements of x.
Examples#
Repeating a scalar element#
// Create a 3x1 vector of 5's
x = reshape(5, 3);
After the above code, x
will equal:
5
5
5
// Create a 1x4 row vector of 5's
x = reshape(5, 1, 4);
After the above code, x
will equal:
5 5 5 5
Examples with a -1 row or column input#
// Create a 3x4 matrix
x = { 1 2 3 4,
5 6 7 8,
9 10 11 12 };
y = reshape(x, 2, -1);
After the above code, y
will equal:
1 2 3 4 5 6
7 8 9 10 11 12
Continuing with the x
from above:
y = reshape(x, -1, 3);
1 2 3
4 5 6
7 8 9
10 11 12
Other basic examples#
y = reshape(x, 2, 6);
1 2 3 4
if x = 5 6 7 8 then y = 1 2 3 4 5 6
9 10 11 12 7 8 9 10 11 12
1 2 3
if x = 4 5 6 then y = 1 2 3 4 5 6
7 8 9 7 8 9 1 2 3
1 2 3 4 5
if x = 6 7 8 9 10 then y = 1 2 3 4 5 6
11 12 13 14 15 7 8 9 10 11 12
if x = 1 2 then y = 1 2 3 4 1 2
3 4 3 4 1 2 3 4
if x = 1 then y = 1 1 1 1 1 1
1 1 1 1 1 1
Remarks#
Matrices (as well as dataframes and string arrays) are stored in row major order.
The first c elements are put into the first row of y, the second in the second row, and so on. If there are more elements in x than in y, the remaining elements are discarded. If there are not enough elements in x to fill y, then when reshape runs out of elements, it goes back to the first element of x and starts getting additional elements from there.