[Numpy-discussion] numpy.fromfunction() doesn't work as expected?

Warren Weckesser warren.weckesser@enthought....
Fri Jul 20 04:50:22 CDT 2012


On Thu, Jul 19, 2012 at 5:52 AM, Cheng Li <scrappedprince.li@gmail.com>wrote:

> Hi All,****
>
> ** **
>
> I have spot a strange behavior of numpy.fromfunction(). The sample codes
> are as follows:****
>
> >>>  import numpy as np****
>
> >>>  def myOnes(i,j):****
>
>              return 1.0****
>
> >>>  a = np.fromfunction(myOnes,(2000,2000))****
>
> >>>  a****
>
> 1.0****
>
> ** **
>
> Actually what I expected is that the function will return a 2000*2000 2d
> array with unit value. The returned single float value really confused me.
> Is this a known bug? The numpy version I used is 1.6.1.****
>
> **
>



Your function will be called *once*, with arguments that are *arrays* of
coordinate values.  It must handle these arrays when it computes the values
of the array to be created.

To see what is happening, print the values of i and j from within your
function, e.g.:


In [57]: def ijsum(i, j):
   ....:     print "i =", i
   ....:     print "j =", j
   ....:     return i + j
   ....:

In [58]: fromfunction(ijsum, (3, 4))
i = [[ 0.  0.  0.  0.]
 [ 1.  1.  1.  1.]
 [ 2.  2.  2.  2.]]
j = [[ 0.  1.  2.  3.]
 [ 0.  1.  2.  3.]
 [ 0.  1.  2.  3.]]
Out[58]:
array([[ 0.,  1.,  2.,  3.],
       [ 1.,  2.,  3.,  4.],
       [ 2.,  3.,  4.,  5.]])


Your `myOnes` function will work if you modify it something like this:


In [59]: def myOnes(i, j):
   ....:     return np.ones(i.shape)
   ....:

In [60]: fromfunction(myOnes, (3, 4))
Out[60]:
array([[ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.]])



The bug is in the docstring for fromfunction.  In the description of the
`function` argument, it says "`function` must be capable of operating on
arrays, and should return a scalar value."  But the function should *not*
return a scalar value.  It should return an array of values appropriate for
the given arguments.

Warren




> **
>
> Regards,****
>
> Cheng****
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20120720/83df8d26/attachment-0001.html 


More information about the NumPy-Discussion mailing list