On Sun, May 8, 2011 at 19:23, Charles R Harris <charlesr.har...@gmail.com> wrote: > > On Sun, May 8, 2011 at 3:15 PM, Paul Anton Letnes > <paul.anton.let...@gmail.com> wrote: >> >> Hi, >> >> it seems that I have found a bug in numpy.ndarray. numpy 1.5.1, python >> 2.7.1 from macports on mac os x 10.6.7. I got the same error on Fedora 14 >> with numpy 1.4.1 and python 2.7. Appending a [0] to the last line solves the >> problem. >> >> % python testcrash.py >> >> [14:13:27 on 11-05-08] >> <type 'numpy.ndarray'> [ 12.+0.1j] >> <type 'numpy.ndarray'> [ 1.+0.1j] >> complex128 >> Traceback (most recent call last): >> File "testcrash.py", line 11, in <module> >> A[0] = A[0] + (eps1 - eps2) >> TypeError: can't convert complex to float >> >> % cat testcrash.py >> #!/usr/bin/env python >> >> import numpy >> >> A = numpy.zeros(10, dtype=numpy.complex128) >> eps1 = numpy.complex128([12.0 + 0.1j]) >> eps2 = numpy.complex128([1.0 + 0.1j]) > > It's the brackets, numpy.complex128([1.0 + 0.1j]) is a 1d array, not a > scalar. The error message is less than helpful though.
Well, not quite. It looks like we do handle (1,) arrays on the RHS just fine: [~/scratch] |46> A = np.arange(10) [~/scratch] |47> A[0] = np.array([1]) [~/scratch] |48> A[0] 1 It works for a variety of dtypes except for the complexes: [~/scratch] |53> for dt in [bool, np.uint8, np.int8, int, float, np.float32, np.complex64, np.complex128, object]: ...> A = np.zeros(10, dtype=dt) ...> try: ...> A[0] = np.array([1], dtype=dt) ...> except Exception, e: ...> print '%s failed: %s: %s' % (dt.__name__, type(e).__name__, e) ...> else: ...> print '%s succeeded' % dt.__name__ ...> bool succeeded uint8 succeeded int8 succeeded int succeeded float succeeded float32 succeeded complex64 failed: TypeError: can't convert complex to float complex128 failed: TypeError: can't convert complex to float object succeeded -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion