[Numpy-discussion] Array printing and another question

Ken Basye kbasye1@jhu....
Tue Apr 8 09:06:15 CDT 2008

Hi Folks,
   I'm pretty new to Numpy, and I hope someone can help me out with a 
couple newbie questions.
   First, I'd like, for diagnostic purposes, to print arrays of floating 
point numbers in a format of my
choosing.  Specifically, I have a formatting function that generates 
strings which represent all the bits
of an FP number exactly, but it formats the exponent, exponent sign, and 
sign separately from the mantissa so I can get a
rough idea of the magnitude at a glance.  We use this to verify that 
certain operations are yielding
exactly the same FP values either across platforms or across algorithmic 
changes.  I'd like to be able
to print numpy arrays in this format.  At this point I've thought of 
three ways to try this.  First, there's
using set_string_function() and then writing my own version of 
array2string() that uses my function
for FP arrays.  OK, but I'd kind of like to avoid the work of 
duplicating the nice way that array2string()
formats arrays of different ranks.  Enticingly, I see code in 
core/arrayprint.py that's looking for an
_format attribute and using it if it exists.  So the second idea is to 
hook into this somehow, but I don't
see how (indeed, I'm not sure when an array ever has an _format 
attribute?).  Finally, I imagine I could
make my own dtype so that array2string will format with %s, then convert 
FP arrays into arrays of
that dtype for printing.  Any ideas which of these would be better, or 
other ideas, would be most
  Second, I wanted to find out how numpy developers and experts feel 
about cross-platform differences
in FP behavior.  Is this considered unavoidable and expected, a bug, or 
somewhere in between? 
Until recently I was about to get exact matches everywhere, but I now 
have at least one example of
a difference.  I should clarify that I'm not talking about 
processor-family dependency; all my machines
are x86 at this point.  Indeed, the differences appear across virtual 
machines running different OSs on
the same physical machine. 
   Thanks in advance,
       Ken Basye

More information about the Numpy-discussion mailing list