* matrix_str: Added support for complex array.
This commit is contained in:
@@ -67,13 +67,40 @@ def vector_str(M, fmt="%22.15g", V=False, prefix="", suffix=""):
|
|||||||
else:
|
else:
|
||||||
return prefix + " ".join([ fmt % m for m in M ]) + suffix
|
return prefix + " ".join([ fmt % m for m in M ]) + suffix
|
||||||
|
|
||||||
def matrix_str(M, fmt="%22.15g", prefix="", suffix=""):
|
def matrix_str(M, fmt=None, prefix="", suffix=""):
|
||||||
|
"""Prints a matrix in a textual format.
|
||||||
|
Applicable for integer, float, and complex 2-D arrays.
|
||||||
|
|
||||||
|
COMPLEX NUMBER SUPPORT
|
||||||
|
|
||||||
|
By default, we print in full precision and in python-friendly format, like:
|
||||||
|
|
||||||
|
(+3.200000000000000e+00+4.700000000000000e+00j)
|
||||||
|
|
||||||
|
To print in C++ and Fortran friendly format, use:
|
||||||
|
|
||||||
|
>>> A_str = text_tools.matrix_str(A, '(%+#22.15e,%+#22.15e)')
|
||||||
|
|
||||||
|
The resulting output will be:
|
||||||
|
|
||||||
|
(+3.200000000000000e+00,+4.700000000000000e+00)
|
||||||
|
"""
|
||||||
linesep = suffix + "\n" + prefix
|
linesep = suffix + "\n" + prefix
|
||||||
if isinstance(M, numpy.matrix):
|
if isinstance(M, numpy.matrix):
|
||||||
M = numpy.asarray(M)
|
M = numpy.asarray(M)
|
||||||
|
elif not isinstance(M, numpy.ndarray):
|
||||||
|
M = numpy.asarray(M)
|
||||||
if len(M.shape) != 2:
|
if len(M.shape) != 2:
|
||||||
raise ValueError, "Wrong shape: expecting a two-dimensional array."
|
raise ValueError, "Wrong shape: expecting a two-dimensional array."
|
||||||
return prefix + linesep.join([ " ".join([ fmt % c for c in R ]) for R in M ]) + suffix
|
if numpy.iscomplex(M[0,0]):
|
||||||
|
if fmt is None:
|
||||||
|
fmt = "(%+22.15e%+22.15ej)"
|
||||||
|
mkfmt = lambda z: fmt % (z.real, z.imag)
|
||||||
|
return prefix + linesep.join([ " ".join([ mkfmt(c) for c in R ]) for R in M ]) + suffix
|
||||||
|
else:
|
||||||
|
if fmt is None:
|
||||||
|
fmt = "%22.15g"
|
||||||
|
return prefix + linesep.join([ " ".join([ fmt % c for c in R ]) for R in M ]) + suffix
|
||||||
|
|
||||||
|
|
||||||
def str_indent(text, indent=" "*4):
|
def str_indent(text, indent=" "*4):
|
||||||
|
|||||||
Reference in New Issue
Block a user