Why does numpy.array(a[0],b[0]) have this meaning?

Robert Kern robert.kern at gmail.com
Mon Nov 3 18:42:52 CET 2008


Rick Giuly wrote:
> Hello All,
> 
> Case 1
> This generates an error, which makes sense because the argument should
> be a list of numbers:
> numpy.array(10,10)
> 
> Case 2
> This does not generate an error and the result is an array with a
> single element:
> a = numpy.array([10])
> b = numpy.array([10])
> numpy.array(a[0],b[0])
> 
> The only different I see here between the numpy.array call in the
> cases is that
> a[0] is a numpy int32
> 10 is an int
> 
> Why would this minor difference in integer types cause a totally
> different result for the two cases - or is something else causing the
> difference in results?

The second argument is for a dtype. Basically, we'll accept anything there that 
can be coerced to a dtype using numpy.dtype(). For some reason, we have an 
undocumented feature where dtype(some_array_or_numpy_scalar) will return the 
dtype of that value. Plain Python ints and floats don't have a dtype attached to 
them, so we raise an exception.

If you have more numpy questions, please join us on the numpy-discussion mailing 
list.

   http://www.scipy.org/Mailing_Lists

-- 
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




More information about the Python-list mailing list