Link to home
Start Free TrialLog in
Avatar of dadadude
dadadude

asked on

concatenate columns c#

Hello i have a list of 1s and 0s List = [1,0,1,0,1,1]
1 means that set of columns is selected and 0 no.
each set of columns maybe differ from the other set since it has different number of columns.

So i want to concatenante all the selected sets together. It's not working I want them to be saved a new 2D array.
Avatar of dadadude
dadadude

ASKER

For more Information:
I have a :
List<String[,]> Features

Open in new window


And i added the sets to a list. So now i have a list of 2D arrays as u can see
and then
Int [] index = new int[11];
suppose index = {1,0,1,0,1}
String [,]sub; // is that the right way.
        for (int i = 0; i < index.Count; i++) {
            if (index[i] == 1)
            {
              
             ???????????? HOW CAN I APPEND THE SELECTED 2D ARRAYS TOGETHER???
                     
            }//end if

        }//end for

Open in new window

Avatar of Dmitry G
Can you explain more clearly what should happen? What you mean "APPEND THE SELECTED 2D ARRAYS"? For example, if index[1] = 1, what arrays you append?! Some examples?
I'll post the code:
As u can see in the code, i already create a list.

Private List<String [,]> features = new List<String[,]>

Open in new window


so I am adding a 2D-Array to the List features.
the list length is 11.
so suppose that i have index = [1,0,0,0,0,0,0,0,0,0,1]

so i should create a new 2D-array with these Columns.
//1. Hauteur
        String[,] hauteur = new String[obs.GetLength(0), 1];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            hauteur[i, 0] = obs[i, 1];
        }
        features.Add(hauteur);
        //2. Largeur
        String[,] largeur = new String[obs.GetLength(0), 1];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            largeur[i, 0] = obs[i, 2];
        }
        features.Add(largeur);
        //3. excentricité
        String[,] excentricite = new String[obs.GetLength(0), 1];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            excentricite[i, 0] = obs[i, 3];
        }
        features.Add(excentricite);
        //4.densite globale
        String[,] densiteGlobale = new String[obs.GetLength(0), 1];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            densiteGlobale[i, 0] = obs[i, 4];
        }
        features.Add(densiteGlobale);
        //5. orientation
        String[,] orientation = new String[obs.GetLength(0), 1];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            orientation[i, 0] = obs[i, 5];
        }
        features.Add(orientation);

        //6.perimetre
        String[,] perimetre = new String[obs.GetLength(0), 1];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            perimetre[i, 0] = obs[i, 6];
        }
        features.Add(perimetre);
        //7. rapport Fitness
        String[,] rapportFitness = new String[obs.GetLength(0), 1];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            rapportFitness[i, 0] = obs[i, 7];
        }
        features.Add(rapportFitness);
        //8. compacite
        String[,] compacite = new String[obs.GetLength(0), 1];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            compacite[i, 0] = obs[i, 8];
        }
        features.Add(compacite);
        //9. densite
        String[,] densite = new String[obs.GetLength(0), 8];

        for (int i = 0; i < obs.GetLength(0); i++)
        {
            for (int j = 8; j < 16; j++)
            {

                densite[i, j - 8] = obs[i, j];

            }
        }
        features.Add(densite);

        //10.orientations contour
        String[,] contour = new String[obs.GetLength(0), 8];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            for (int j = 16; j < 24; j++)
            {

                contour[i, j - 16] = obs[i, j];
            }
        }
        features.Add(contour);
        //11. Zernike
        String[,] zernike = new String[obs.GetLength(0), 35];
        for (int i = 0; i < obs.GetLength(0); i++)
        {
            for (int j = 24; j < 59; j++)
            {

                zernike[i, j - 24] = obs[i, j];
            }
        }
        features.Add(zernike);

        List<String[,]> matrix = new List<String[,]>();
        
        for (int i = 0; i < index.Count; i++)
        {
            if (index[i] == 1)
            {
                matrix.Add(features[i]);

            }//end if

Open in new window

I don't know if what i did is correct. I created a new List and added the selected Items to it.
is that right. it's in the end of the code.
Because code, it seems, not quite correct, I can't understand what you are trying to achieve.

For example, you last statement is strange:

// see code section - I can't paste it here...

Basically, you don't need a loop, you add just one element if i==1. So, effectively you run:

                matrix.Add(features[1]);

 And your matrix has just one element. matrix and features has same structure, datatype, they are lists of square arrays.
What matrix should represent?

Again, what do you mean by "concatenation"?

for (int i = 0; i < index.Count; i++)
        {
            if (index[i] == 1)
            {
                matrix.Add(features[i]);

            }//end if
        }

Open in new window

HOPE THAT THIS PICTURE HELP!!!

Sans-titre.jpg
AS you can see in the picture Index(0) = 1 SO I should take Features[0], and Index(2) = 1, so i should take features(2).
Bottom Line i want TO Concatenate 2D-arrays by columns.
if matrix1 =
1 2 3 4
1 2 3 4
1 2 3 4

and matrix2 =

5  6 7 8 9
5 6 7 8 0
5 6 7 8 0

so matrix3 = Matrix1 + Matrix2:

1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 0
1 2 3 4 5 6 7 8 0
ASKER CERTIFIED SOLUTION
Avatar of Dmitry G
Dmitry G
Flag of New Zealand image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
not bad for an answer. it's ok