[Numpy-discussion] "Extended" Outer Product

Charles R Harris charlesr.harris@gmail....
Tue Aug 21 11:44:09 CDT 2007


On 8/20/07, Geoffrey Zhu <zyzhu2000@gmail.com> wrote:
>
> Hi Everyone,
>
> I am wondering if there is an "extended" outer product. Take the
> example in "Guide to Numpy." Instead of doing an multiplication, I
> want to call a custom function for each pair.
>
> >>> print outer([1,2,3],[10,100,1000])
>
> [[ 10 100 1000]
> [ 20 200 2000]
> [ 30 300 3000]]
>
>
> So I want:
>
> [
> [f(1,10), f(1,100), f(1,1000)],
> [f(2,10), f(2, 100), f(2, 1000)],
> [f(3,10), f(3, 100), f(3,1000)]
> ]


Maybe something like

In [15]: f = lambda x,y : x*sin(y)

In [16]: a = array([[f(i,j) for i in range(3)] for j in range(3)])

In [17]: a
Out[17]:
array([[ 0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.84147098,  1.68294197],
       [ 0.        ,  0.90929743,  1.81859485]])

I don't know if nested list comprehensions are faster than two nested loops,
but at least they avoid array indexing.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20070821/62174881/attachment-0001.html 


More information about the Numpy-discussion mailing list