Hi Anne, Thanks for the approach ideas - I'll take a look at this soon to try to understand it. Currently I'm visiting a LabView-based lab who already have something that works, and works fast, so I'm being encouraged to use LabView, but I'd like to show them more of the joys of Python. The memory requirements aren't yet an issue with the data sets I'm using, but they could be later.
Anne Archibald wrote: > 2008/6/16 [EMAIL PROTECTED] <[EMAIL PROTECTED]>: >> I have a speed problem with the approach I'm using to detect phase >> wrappings in a 3D data set. <big snip> > I'd start by looking at the problem one face at a time: > def find_vortices(X, axis=0): > XX = np.rollaxis(X,axis) > loop = np.concatenate((XX[np.newaxis,:-1,:-1,...], > XX[np.newaxis,1:,:-1,...], > XX[np.newaxis,1:,1:,...], > XX[np.newaxis,:-1,1:,...], > XX[np.newaxis,:-1,:-1,...]),axis=0) > loop = np.unwrap(loop) > r = np.abs(loop[0,...]-loop[-1,...])<np.pi/2 > return np.rollaxis(r,0,axis+1) <snip> > standard trick for cutting down on temporary sizes: use a for loop > along the smallest dimension and a vector along the rest. In fact in > this case I'd use a 2D vortex finder and iterate along the remaining > axis; do this three times and you're done. I might also try three 1D finders, keeping three temporary boolean result arrays, then logically OR them. thanks, Gary R. _______________________________________________ Numpy-discussion mailing list [email protected] http://projects.scipy.org/mailman/listinfo/numpy-discussion
