use 'f' to tell numpy that its array element is a float type:
b = numpy.array([1,2,3,4],'f')

an alternative is to put dot after the number:
b = numpy.array([1. ,2. ,3. ,4.])

This hopefully solve your problem.

Cheers,
pujo

On 5/23/06, Ivan Vilata i Balaguer <ivilata@carabos.com> wrote:
(I'm sending this again because I'm afraid the previous post may have
qualified as spam because of it subject.  Sorry for the inconvenience.)

Hi all, when working with numexpr, I have come across a curiosity in
both numarray and numpy::

  In [30]:b = numpy.array([1,2,3,4])
  In [31]:b ** -1
  Out[31]:array([1, 0, 0, 0])
  In [32]:4 ** -1
  Out[32]:0.25
  In [33]:

According to http://docs.python.org/ref/power.html:

  For int and long int operands, the result has the same type as the
  operands (after coercion) unless the second argument is negative; in
  that case, all arguments are converted to float and a float result is
  delivered.

Then, shouldn't be ``b ** -1 == array([1.0, 0.5, 0.33333333, 0.25])``
(i.e. a floating point result)? Is this behaviour intentional?  (I
googled for previous messages on the topic but I didn't find any.)

Thanks,

::

        Ivan Vilata i Balaguer   >qo<   http://www.carabos.com/
               Cárabos Coop. V.  V  V   Enjoy Data
                                  ""