Laden...

2D Array Spalte in 1D Array kopieren

Erstellt von sadza79 vor 18 Jahren Letzter Beitrag vor 18 Jahren 6.230 Views
S
sadza79 Themenstarter:in
69 Beiträge seit 2004
vor 18 Jahren
2D Array Spalte in 1D Array kopieren

Hallo Zusammen,

habe ein 2D Array mit double Werten:

double [,] data = new double[3, 40];

Jetzt möchte ich z.B. die zweite Spalte in ein 1D Array kopieren!

double [] dataTmp = new double[40];

Möchte dies nicht unbediengt durch eine Schleife lösen!
Auch wenn z.B. das vielleicht durch eine Interne Funktion so
gelöst wird!

THX

S
34 Beiträge seit 2003
vor 18 Jahren
double [] dataTmp = data[1]; // für 2te Spalte

Hier würde er auch nichts intern kopieren sondern einfach die Referenz übernehmen.
Aber wenn du jetzt von in dataTmp änder er das sozu sagen in data mit.
Klor?

Java macht schöner und erhöht die Lebenserwartung. java-forum.org

4.221 Beiträge seit 2005
vor 18 Jahren

Bau Dir doch anstelle des 2D Arrays ein Hierarchiches Array.....


object[,]data=new object[3,1];
			
			
			//fill TestData
			for (int i=0;i<3;i++)
			{
				double[] temp=new double[40];
				data[i,0]=temp;
				for (int j=0;j<40;j++)
				{
					temp[j]=i*j;
				}
			}
			double [] dataTmp = data[1,0] as Double[];

Nur so wirst Du um's iterieren rumkommen

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
sadza79 Themenstarter:in
69 Beiträge seit 2004
vor 18 Jahren

Hallo,

vielen Dank für die Vorschläge.
Das Hierarchiche Array ist prima!

Hallo stevg,
auf diese Idee bin ich auch schon gekommen, jedoch
bekomme ich diese Zeile nicht kompilert!

Fehlermeldung
Falsche Anzahl von Indizes in []. '2' werden erwartet.

S
34 Beiträge seit 2003
vor 18 Jahren

Jo sry,
hab auch erst gestern mit C# angefangen und dachte dass das in C# wie in Java läuft. Dort ist alles automatisch ein Hierarchicher Array, also ein 2 dimensionaler Array ist dort ein Array aus Arrays, kein wirklicher 2D Array.
bla hin bla her wollte das gleiche machen wie Programmierhans hab nur die Syntax vollkommen falsch angewendet.

Java macht schöner und erhöht die Lebenserwartung. java-forum.org

4.221 Beiträge seit 2005
vor 18 Jahren

Original von stevg
Jo sry,
hab auch erst gestern mit C# angefangen und dachte dass das in C# wie in Java läuft. Dort ist alles automatisch ein Hierarchicher Array, also ein 2 dimensionaler Array ist dort ein Array aus Arrays, kein wirklicher 2D Array.
bla hin bla her wollte das gleiche machen wie Programmierhans hab nur die Syntax vollkommen falsch angewendet.

Es sei dir verziehen 😁 .... mal ehrlich.... war auch mein erster Ansatz.... habs dann aber erst probiert bevor ich's poste ..

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
34 Beiträge seit 2003
vor 18 Jahren

Original von Programmierhans
Es sei dir verziehen 😁

hehe, danke.

Aber hab noch ne andere, bessere 😉, Lösung:

object[]data=new object[3];
               
//fill TestData
for (int i=0;i<3;i++){
     double[] temp=new double[40];
     data[i]=temp;
     for (int j=0;j<40;j++){
         temp[j]=i*j;
     }
}
double [] dataTmp = data[1] as Double[];
            
foreach(double d in dataTmp){
   	System.Console.WriteLine(d);
}

Java macht schöner und erhöht die Lebenserwartung. java-forum.org

4.221 Beiträge seit 2005
vor 18 Jahren

und wenn er in der ersten Dimension was drinne hat ?

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
34 Beiträge seit 2003
vor 18 Jahren

Wie meinst das? Die erste Dimension enthält wiederum ein-dimensionnalen Arrays, die die 2te Dimension bilden.

Java macht schöner und erhöht die Lebenserwartung. java-forum.org

4.221 Beiträge seit 2005
vor 18 Jahren

Original von stevg
Wie meinst das? Die erste Dimension enthält wiederum ein-dimensionnalen Arrays, die die 2te Dimension bilden.

ja in 0,0 1,0 2,0

aber in 0,1 1,1 2,1 könnte ja auch noch was drin sein

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
34 Beiträge seit 2003
vor 18 Jahren

Wieso 1,1? data ist bei meinem Code ein-dimensonal.

Sagen wir du willst nen 2 Dimensionalen Array erstellen der in der ersten Di. eine größe von 7 und in der 2ten Di. eine größe von 9 hat.
Das könnte man über
double [,] data = new double[7, 9]; machen, dann hast du aber nen echten 2 Dimensionalen Array und kannst die zweite Dimension nicht wie von sadza79 gewünscht getrennt behandeln.
Ich habe jetzt einfach einen ein-dimensionalen Array angelegt, der wiederum aus ein-dimensionalen Arrays besteht:
So würde das dann aussehen:

So kann man auf die Daten genau so gut zugreifen wie auf nen richtigen 2 Dimensionalen Array und man kann die 2te Dimension getrennt behandeln.

Hoffe es jetz etwas klarer, besser kann ich's nicht erklären.

Java macht schöner und erhöht die Lebenserwartung. java-forum.org

4.221 Beiträge seit 2005
vor 18 Jahren

Ich bin fälschlicherweise davon ausgegangen dass [3,1] ein Array mit 6 Elementen erstellt.... dabei wären die [x,0] mit den 40er Arrays gefüllt und die [x,1] wären leer geblieben.... (so wie ein [3,2] aussieht)

Dies dürfte der Grund sein wieso wir aneinander vorbeidiskutiert haben. Ich wollte Dir klarmachen dass Du mit deinem Code 3 Elemente weglässt (welche es aber gar nie gegeben hat)...

Ich muss mir glaub mal nen Taschenrechner coden welcher bei 1*3 nicht auf 6 kommt 😉

Hast Du meinen Irrtum verstanden ? 😉

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
34 Beiträge seit 2003
vor 18 Jahren

Jo, ich glaub.

Java macht schöner und erhöht die Lebenserwartung. java-forum.org