[Numpy-discussion] [SciPy-User] Saving Complex Numbers

Pauli Virtanen pav at iki.fi
Fri Jul 16 04:46:33 EDT 2010


Thu, 15 Jul 2010 20:00:09 -0400, David Warde-Farley wrote:

> (CCing NumPy-discussion where this really belongs)
> 
> On 2010-07-08, at 1:34 PM, cfrazer at uci.edu wrote:
> 
>> Need Complex numbers in the saved file.
> 
> Ack, this has come up several times according to list archives and no
> one's been able to provide a real answer.
> 
> It seems that there is nearly no formatting support for complex numbers
> in Python. for a single value, "{0.real:.18e}{0.imag:+.18e}".format(val)
> will get the job done, but because of the way numpy.savetxt creates its
> format string this isn't a trivial fix.
> 
> Anyone else have ideas on how complex number format strings can be
> elegantly incorporated in savetxt?

The bug here is that

	>>> z = np.complex64(1+2j)
	>>> '%.18e' % z
	'1.000000000000000000e+00'
	>>> float(np.complex64(1+2j))
	1.0

This should raise an exception. I guess the culprit is at 
scalarmathmodule.c.src:1023.

It should at least be changed to raise a ComplexWarning, which we now 
anyway do in casting.

-- 
Pauli Virtanen




More information about the NumPy-Discussion mailing list