numpy.ndarray constructor from python list: bug?

Dear all, Look at this little example: ---- import numpy a = numpy.array([1]) b = numpy.array([1,2,a]) c = numpy.array([a,1,2]) ---- Which has the following output: ---- Traceback (most recent call last): File "b.py", line 4, in <module> c = numpy.array([a,1,2]) ValueError: setting an array element with a sequence. ---- It seems that a list starting with an ndarray ('a', of a single number) is not a legal input to build an ndarray. Instead if 'a' is in other places of the list the ndarray builds up flawlessly. Is there a meaning for this behavior or is it a bug? Details: numpy 1.04 on ubuntu linux x86_64 Emanuele

On Thu, Mar 6, 2008 at 9:53 AM, Emanuele Olivetti <emanuele@relativita.com> wrote:
Dear all,
Look at this little example: ---- import numpy a = numpy.array([1]) b = numpy.array([1,2,a]) c = numpy.array([a,1,2]) ---- Which has the following output: ---- Traceback (most recent call last): File "b.py", line 4, in <module> c = numpy.array([a,1,2]) ValueError: setting an array element with a sequence. ----
It seems that a list starting with an ndarray ('a', of a single number) is not a legal input to build an ndarray. Instead if 'a' is in other places of the list the ndarray builds up flawlessly.
Is there a meaning for this behavior or is it a bug?
Details: numpy 1.04 on ubuntu linux x86_64
Hi, I see the same behaviour with 1.0.5.dev4786. I think the bug is that the b assignment should also fail. They both fail (as I think they should) if you take a as an array with more than one element. I think the array constructor expects lists of numbers, not of arrays etc. To do what you want try b = r_[1,2,a] c = r_[a,1,2] which works for a an array (and of more than one element). Cheers Robin
participants (2)
-
Emanuele Olivetti
-
Robin