[Numpy-discussion] Assigning complex values to a real array

Charles R Harris charlesr.harris@gmail....
Fri Mar 6 19:28:03 CST 2009

On Fri, Mar 6, 2009 at 6:18 PM, Stéfan van der Walt <stefan@sun.ac.za>wrote:

> Hi all,
> The following code succeeds, while I thought it should fail:
> a = np.zeros(6) # real
> b= np.arange(6)*(2+3j) # complex
> a[1] = b[1] # shouldn't this break?
> What is the rationale behind this behaviour?

The same as this:

In [1]: a = zeros(2)

In [2]: a[0] = '1'

In [3]: a
Out[3]: array([ 1.,  0.])

The question is whether such usage is likely in error, calling for an
exception, or a useful convenience to avoid a cast. I tend to think that
casts should be made explicit in such cases but it's a fine line. What about

In [5]: a = zeros(2)

In [6]: a[0] = 1

In [7]: a
Out[7]: array([ 1.,  0.])

Should a cast be required? What if the lhs is a float32 and the rhs is a
python float?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20090306/f3130a29/attachment.html 

More information about the Numpy-discussion mailing list