[Numpy-discussion] getting the equivalent complex dtype from a real or int array

Robert Kern robert.kern at gmail.com
Tue Oct 29 13:02:33 EDT 2013

On Tue, Oct 29, 2013 at 4:47 PM, Henry Gomersall <heng at cantab.net> wrote:
> Is there a way to extract the size of array that would be created by
> doing 1j*array?
> The problem I'm having is in creating an empty array to fill with
> complex values without knowing a priori what the input data type is.
> For example, I have a real or int array `a`.
> I want to create an array `b` which can hold values from 1j*a in such a
> way that I don't need to compute those explicitly (because I only need
> parts of the array say), without upcasting (or indeed downcasting) the
> result.
> So if `a` was dtype 'float32`, `b` would be of dtype `complex64`. If `a`
> was `int64`, `b` would be of dtype `complex128` etc.

Quick and dirty:

# Get a tiny array from `a` to test the dtype of its output when multiplied
# by a complex float. It must be an array rather than a scalar since the
# casting rules are different for array*scalar and scalar*scalar.
dt = (a.flat[:2] * 1j).dtype
b = np.empty(shape, dtype=dt)

Robert Kern
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20131029/8beecabd/attachment.html>

More information about the NumPy-Discussion mailing list