I have a set of arrays I would like to output to some file ArrayStorage.txt
s.t. these arrays could be read-in to a separate notebook on a separate kernel. Is there an easy way to export a set of arrays?
-
2$\begingroup$ "Is there an easy way to export a set of arrays" — the question seems to imply that existing methods are difficult. Have you tried looking in the help center? (press F1) $\endgroup$– rm -rf ♦Commented Mar 14, 2013 at 23:42
-
$\begingroup$ @rm-rf Exporting a single array looks pretty simple, but I'm asking about exporting and importing a list of arrays? $\endgroup$– FaintingWaterCommented Mar 14, 2013 at 23:44
-
$\begingroup$ @FaintingWater A list of arrays is just a tensor of a higher rank. The question is: For which application do you want to export it? $\endgroup$– halirutanCommented Mar 14, 2013 at 23:48
-
$\begingroup$ @halirutan For Mathematica. I would like a single file where I can reload all of my variables from another notebook after quitting the kernel? $\endgroup$– FaintingWaterCommented Mar 14, 2013 at 23:57
-
1$\begingroup$ Then DumpSave is worth a look. You find it e.g. here in this question mathematica.stackexchange.com/q/121/187 $\endgroup$– halirutanCommented Mar 15, 2013 at 0:01
2 Answers
If you want to save definitions, then DumpSave
is one way to go:
a = RandomReal[1, 1000];
b = RandomInteger[10, 10000];
c = {blub, boing, ups};
DumpSave["tmp/out.mx", {a, b, c}];
Now you can quit the kernel or restart Mathematica and with
<< "tmp/out.mx"
a
, b
and c
have their old values again.
One thing you should note is that files written by DumpSave
can only be read on the same type of computer system on which they were written.
-
$\begingroup$ Always worth noting
DumpSave
is platform specific. $\endgroup$– kaleCommented Mar 15, 2013 at 1:09 -
$\begingroup$ @kale I added this information. Thanks. $\endgroup$ Commented Mar 15, 2013 at 1:43
Another way was suggested by David Bailey on MathGroup late last year (https://groups.google.com/forum/?fromgroups=#!searchin/comp.soft-sys.math.mathematica/david$20bailey%7Csort:date/comp.soft-sys.math.mathematica/lf-EJeiqDwY/eEF29xJUFZwJ).
Briefly, as an alternative to MX files, try
str=OpenWrite[file,BinaryFormat->True];
BinaryWrite[str,magic,"TerminatedString"];
BinaryWrite[str,Compress[{expr,version}],"TerminatedString"];
Close[str];
to save, and
str=OpenRead[file,BinaryFormat->True];
If[BinaryRead[str,"TerminatedString"]==magic,
expr=Uncompress[BinaryRead[str,"TerminatedString"]];
];
Close[str];
to read.