Mathematica: lijstjes maken
- Berichten: 145
Mathematica: lijstjes maken
Ik heb een aantal lijstjes, bijvoorbeeld:
Data =
{1, 2, 3}
{4, 5, 6}
{7, 8 9}
Nu wil ik nieuwe lijstjes maken met alle waarden uit elke kolom, dus dat ik de volgende lijstjes krijg:
{1, 4, 7}
{2, 5, 8}
{7, 8, 9}
Dit probeer ik met Take[data, All, 1] en dan krijg ik:
{{1}, {4}, {7}}
Dit geeft dus wel alle cijfers uit de eerste kolom, maar niet in één lijstje zoals ik wil. Daarnaast wil ik in één keer alle kolommen doen, dus niet dat ik dan ook nog eens Take[data, All, 2] en Take[data, All, 3] moet doen voor de rest van de lijstjes. Hoe kan ik dit doen?
Data =
{1, 2, 3}
{4, 5, 6}
{7, 8 9}
Nu wil ik nieuwe lijstjes maken met alle waarden uit elke kolom, dus dat ik de volgende lijstjes krijg:
{1, 4, 7}
{2, 5, 8}
{7, 8, 9}
Dit probeer ik met Take[data, All, 1] en dan krijg ik:
{{1}, {4}, {7}}
Dit geeft dus wel alle cijfers uit de eerste kolom, maar niet in één lijstje zoals ik wil. Daarnaast wil ik in één keer alle kolommen doen, dus niet dat ik dan ook nog eens Take[data, All, 2] en Take[data, All, 3] moet doen voor de rest van de lijstjes. Hoe kan ik dit doen?
- Berichten: 7.556
Re: Mathematica: lijstjes maken
Moet die laatste niet {3,6,9} zijn?Lapzwans schreef:Data =
{1, 2, 3}
{4, 5, 6}
{7, 8 9}
Nu wil ik nieuwe lijstjes maken met alle waarden uit elke kolom, dus dat ik de volgende lijstjes krijg:
{1, 4, 7}
{2, 5, 8}
{7, 8, 9}
Zo ja, dan lijkt me het voor de hand liggen om er een matrix van te maken, en dan gewoon transponeren.
Dus
Code: Selecteer alles
A={{1,2,3},{4,5,6},{7,8,9};
Code: Selecteer alles
B=Transpose[A]
Code: Selecteer alles
B={{1, 4, 7}, {2, 5, 8}, {3, 6, 9}}
Never express yourself more clearly than you think.
- Niels Bohr -
- Niels Bohr -
- Berichten: 145
Re: Mathematica: lijstjes maken
Natuurlijk, transpose! Dat zocht ik Bedankt voor je hulp!
- Berichten: 7.556
Re: Mathematica: lijstjes maken
Graag gedaan!
Never express yourself more clearly than you think.
- Niels Bohr -
- Niels Bohr -
- Berichten: 145
Re: Mathematica: lijstjes maken
Nog een vraagje als het niet erg vindt.
Ik heb twee lijstjes, l1 = {1, 2, 3} en l2 = {4, 5, 6}. Nu wil ik het eerste element van lijstje 1 bij het eerste element van lijstje 2 voegen, enz. Dus dat ik dit krijg:
l3 = {1,4}, {2, 5}, {3, 6}
Volgens mij moet dit met Table o.i.d.?
Ik heb twee lijstjes, l1 = {1, 2, 3} en l2 = {4, 5, 6}. Nu wil ik het eerste element van lijstje 1 bij het eerste element van lijstje 2 voegen, enz. Dus dat ik dit krijg:
l3 = {1,4}, {2, 5}, {3, 6}
Volgens mij moet dit met Table o.i.d.?
- Berichten: 7.556
Re: Mathematica: lijstjes maken
Weet niet of het de elegantste methode is, maar dit werkt:
Code: Selecteer alles
Table[{l1[[i]], l2[[i]]}, {i, 1, 3}]
Never express yourself more clearly than you think.
- Niels Bohr -
- Niels Bohr -
- Berichten: 145
Re: Mathematica: lijstjes maken
Nu heb ik toch nog één vraagje, deze is wat ingewikkelder.
Stel nu ik heb de volgende lijsten:
L1 = {a, b, c}
L2 = {1, 2, 3}, {4, 5, 6}, {7, 8, 9}
Nu wil ik graag het eerste element van L1 combineren met alle eerste elementen van L2 enzovoort, zoals zonet, maar in dit geval bestaat L2 uit meerdere lijstjes. Dus dan bestaat L3 niet uit één lijstje meer zoals bij mijn vorige vraag, maar uit drie. Wat ik bedoel is dit:
L3 = {{a, 1}, {b, 2}, {c, 3}}, {{a, 4}, {b, 5}, {c, 6}}, {{a, 7}, {b, 8}, {c, 9}}
Iemand enig idee?
Stel nu ik heb de volgende lijsten:
L1 = {a, b, c}
L2 = {1, 2, 3}, {4, 5, 6}, {7, 8, 9}
Nu wil ik graag het eerste element van L1 combineren met alle eerste elementen van L2 enzovoort, zoals zonet, maar in dit geval bestaat L2 uit meerdere lijstjes. Dus dan bestaat L3 niet uit één lijstje meer zoals bij mijn vorige vraag, maar uit drie. Wat ik bedoel is dit:
L3 = {{a, 1}, {b, 2}, {c, 3}}, {{a, 4}, {b, 5}, {c, 6}}, {{a, 7}, {b, 8}, {c, 9}}
Iemand enig idee?
- Berichten: 7.556
Re: Mathematica: lijstjes maken
Code: Selecteer alles
L1 = {a, b, c};
L2 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Table[Table[{L1[[i]], L2[[k]][[i]]}, {i, 1, 3}], {k, 1, 3}]
Never express yourself more clearly than you think.
- Niels Bohr -
- Niels Bohr -
- Berichten: 145
Re: Mathematica: lijstjes maken
Dank je wel voor je hulp. Van die commando loopt mijn computer echter bijna vast
- Berichten: 7.556
Re: Mathematica: lijstjes maken
Huh? Hier gaat het gewoon goed. Zeker weten de volledige code (exact) overgenomen?
De output is simpelweg
De output is simpelweg
Code: Selecteer alles
{{{a, 1}, {b, 2}, {c, 3}}, {{a, 4}, {b, 5}, {c, 6}}, {{a, 7}, {b, 8}, {c, 9}}}
Never express yourself more clearly than you think.
- Niels Bohr -
- Niels Bohr -
- Berichten: 145
Re: Mathematica: lijstjes maken
Die hierboven lukt wel inderdaad. Probleem is dat het lijstje L1 dat ik daadwerkelijk gebruik 108 elementen heeft en mijn L2 heeft dus 12 lijstjes van 108 elementen.
Edit: Ik deed hem gewoon verkeerd. Voor i vulde ik correct 108 in, maar voor k ook. De waarde van k moest echter 12 zijn natuurlijk
Edit: Ik deed hem gewoon verkeerd. Voor i vulde ik correct 108 in, maar voor k ook. De waarde van k moest echter 12 zijn natuurlijk
- Berichten: 7.556
Re: Mathematica: lijstjes maken
Gelukkig maar
Never express yourself more clearly than you think.
- Niels Bohr -
- Niels Bohr -
- Berichten: 145
Re: Mathematica: lijstjes maken
Nog een vraagje, dit keer maar even een plaatje erbij.
Zoals je kunt zien bestaat L1 uit twee lijstjes. Op beide lijstjes heb ik een Linear Regress uitgevoerd en het resultaat staat eronder. Nu wil ik eigenlijk die waarden die ik gevonden heb (dus de a en b uit de functie y = a + bx) 'tastbaar' maken, zodat ik ermee kan werken. Dus ik wil krijgen:
L2 = {0.666667, 1.5}, {1.66667, 1}
Enig idee Phys? (Of iemand anders natuurlijk)
Zoals je kunt zien bestaat L1 uit twee lijstjes. Op beide lijstjes heb ik een Linear Regress uitgevoerd en het resultaat staat eronder. Nu wil ik eigenlijk die waarden die ik gevonden heb (dus de a en b uit de functie y = a + bx) 'tastbaar' maken, zodat ik ermee kan werken. Dus ik wil krijgen:
L2 = {0.666667, 1.5}, {1.66667, 1}
Enig idee Phys? (Of iemand anders natuurlijk)
- Berichten: 7.556
Re: Mathematica: lijstjes maken
A.u.b. ook de code meegeven (bij voorkeur in code-tags), zodat ik het niet helemaal hoef over te typen =D>
Anyway, doe het volgende: kopieer de tweede regel (en vervang fit door bijv. fit2, dat spreekt voor zich), waarbij je "BestFit" vervangt door "BestFitParameters".
Dus
Anyway, doe het volgende: kopieer de tweede regel (en vervang fit door bijv. fit2, dat spreekt voor zich), waarbij je "BestFit" vervangt door "BestFitParameters".
Dus
Code: Selecteer alles
fit2 = Table[Regress[L1[[i]], x, x, RegressionReport -> {BestFitParameters}], {i, 1, 2}]
Never express yourself more clearly than you think.
- Niels Bohr -
- Niels Bohr -