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 this? 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? Chuck