Hi

The following code produces the desired result but has a slow triple loop
iterating over the matrix multiplication.

I'm sure it can be eliminated with a neat indexing trick but I can't figure
out how.

Any suggestions please?
-----------------------------
import numpy
#define domain of function
x = numpy.linspace(-5,5,64)
y = numpy.linspace(-5,5,64)
z = numpy.linspace(-5,5,64)

#calculate f at each point in domain
a = 5.0
b = 3.0
c = 2.0
#ellipsoid
E = numpy.array([[1/a**2,   0   ,   0  ,  0  ],
                [   0   ,1/b**2 ,   0  ,  0  ],
                [   0   ,   0   ,1/c**2,  0  ],
                [   0   ,   0   ,   0  , -1  ]])

f = numpy.zeros((x.size,y.size,z.size))

for i,xi in enumerate(x):
    for j,yj in enumerate(y):
        for k,zk in enumerate(z):
            X = numpy.array([xi,yj,zk,1])
            f[i,j,k] = numpy.dot(numpy.dot(X.T,E),X)
-----------------------------------

Thanks Eleanor
-- 
View this message in context: 
http://old.nabble.com/Need-to-eliminate-a-nested-loop-tp31591457p31591457.html
Sent from the Numpy-discussion mailing list archive at Nabble.com.

_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to