Newbie : innerproduct function from Numarray

Ohkyu Yoon okyoon at stanford.edu
Mon Jan 26 22:29:25 CET 2004


I have two vectors that have about 2000 elements.
I need to calculate the innerproducts of those vectors 2000 times where
one of them cycles left(ie 1234, then 2341, then 3412, etc)
Basically, I want to calculate A*x, where A is a left-circulant cyclic
matrix,
and x is a vector.

I tried it two ways.
vector1 & vector2 are lists.

1)
from Numarray import innerproduct
output = []
temp = vector1 + vector1    # temp is twice the length of vector1
for i in range(2000):
     output.append(innerproduct(temp[i:(i+2000)],vector2)
2)
output = []
temp = vector1 + vector1
for i in range(2000):
    sum = 0
    for j in range(2000):
        sum += temp[i+j] * vector2[j]
    output.append(sum)

I thought the first method using Numarray should be faster.
But it looks like the second method is faster.
Am I doing anything wrong?
Do you guys know any faster way to do this?

Thank you.





More information about the Python-list mailing list