DMelt:IO/Saving Arrays

From HandWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Member


Multi-dimensional arrays

Arrays in 1,2,3,4,5 dimensions can be written in a binary form to files and later restored. Unlike the standard Java serialization, we will consider a binary form for such arrays.

Input and Output for 1D and 2D array

The easiest way to store 1D arrays of double values in a compact binary form is to use jhplot.math.DoubleArray jhplot.math.DoubleArray or jhplot.math.IntegerArray jhplot.math.IntegerArray (for integers) and then use the classjhplot.math.io.ASCIIFile jhplot.math.io.ASCIIFile to write and read such arrays.

Here is a small example:

from  jhplot.math.DoubleArray import *
from  jhplot.math.io.ASCIIFile import *

a =[1.0, 2.0, 3.0, 4.0]
b =[ [1.0, 2.0, 3.0, 4.0], [11.0, 12.0, 13.0, 14.0] ]
writeDoubleArray(File("a.txt"), a) # write files in ASCII
writeDoubleArray(File("b.txt"), b)

a_read = readDouble1DArray(File("a.txt")) # reading arrays
b_read = readDoubleArray(File("b.txt"))

print "a_read =  \n" + printDoubleArray(a_read)  # now print
print "b_read =  \n" + printDoubleArray(b_read)

Large arrays can be written in the binary form:

from  jhplot.math.DoubleArray import *
from  jhplot.math.io.BinaryFile import *
a =[1.0, 2.0, 3.0, 4.0]
writeDoubleArray(File("a.dat"), a, "LITTLE_ENDIAN")      # write the array  
a_read = readDoubleArray(File("a.dat"), "LITTLE_ENDIAN") # read these file
print  "a_read from binary file = \n" + printDoubleArray(a_read)

2D arrays cannot be written in the binary form using this approach

Below we will consider a more general approach to write and read 1D, 2D, 3D, 4D and 5D arrays in the binary form.

I/O for 1D array

Use the class called jhplot.io.ArrayReaderWriter jhplot.io.ArrayReaderWriter which can write and read arrays in multiple dimensions. Here is a small example for 1D arrays:

>> from  jhplot.io import ArrayReaderWriter
>> ArrayReaderWriter.write([1.0,2.0,3.0,4.0,],"test.d")
>> b=ArrayReaderWriter.read1DArray("test.d")
>> print b
array('d', [1.0, 2.0, 3.0, 4.0])

I/O for 2D array

jhplot.io.ArrayReaderWriter jhplot.io.ArrayReaderWriter which can write and read arrays in multiple dimensions. Here is a small example for 1D arrays:

>> from  jhplot.io import ArrayReaderWriter
>> ArrayReaderWriter.write([[1.0,2.0],[1,2],"test.d")
>> b=ArrayReaderWriter.read2DArray("test.d")          # read it back



I/O of 3D array

I/O of 4D array


I/O of 5D array