Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I Transpose a multi dimensional array?

Tags:

arrays

c#

I think this might be a pretty simple question, but I haven't been able to figure it out yet. If I've got a 2-dimensional array like so:

int[,] matris = new int[5, 8] { 
       { 1, 2, 3, 4, 5,6,7,8 }, 
       {9,10,11,12,13,14,15,16},
       { 17,18,19,20,21,22,23,24 },
       { 25,26,27,28,29,30,31,32 },
       { 33,34,35,36,37,38,39,40 },

        };

and a for loop, like this:

  for (int r = 0; r < 5; r++)
        {

            for (int j = 0; j < 8; j++)
                Console.Write("{0} ", matris[r, j]);

            Console.WriteLine();
        }

So with this code I am printing out the multi dimensional array. But how do I print out a transpose of the array?

like image 421
user2669196 Avatar asked Aug 21 '13 22:08

user2669196


People also ask

Can you transpose a 3D matrix?

For example, transpose() is useful when a 3D array is a group of 2D arrays. If the data of matrices are stored as a 3D array of shape (n, row, column) , all matrices can be transposed as follows. If the shape is (row, column, n) , you can do as follows.

Can you transpose a 1D array?

The transpose of a 1D array is still a 1D array! (If you're used to matlab, it fundamentally doesn't have a concept of a 1D array. Matlab's "1D" arrays are 2D.) If you want to turn your 1D vector into a 2D array and then transpose it, just slice it with np.

How do you transpose a 2-D matrix?

Transpose of a matrix is obtained by changing rows to columns and columns to rows. In other words, transpose of A[N][M] is obtained by changing A[i][j] to A[j][i].


2 Answers

Just change your loops with each other:

for (int j = 0; j < 8; j++)
{
    for (int r = 0; r < 5; r++)
        Console.Write("{0} ", matris[r, j]);

    Console.WriteLine();
}

Creating new array:

var newArray = new int[8, 5];
for (int j = 0; j < 8; j++)
    for (int r = 0; r < 5; r++)
        newArray[j, r] = matris[r, j];
like image 76
MarcinJuraszek Avatar answered Sep 25 '22 20:09

MarcinJuraszek


You just need to do this:

for (int r = 0; r < 8; r++)
{
    for (int j = 0; j < 5; j++)
        Console.Write("{0} ", matris[j, r]);
    Console.WriteLine();
}
like image 26
Anna Avatar answered Sep 25 '22 20:09

Anna