2008/5/22 Andrea Gavana <[EMAIL PROTECTED]>: > Hi All, > > I am building some 3D grids for visualization starting from a much > bigger grid. I build these grids by satisfying certain conditions on > x, y, z coordinates of their cells: up to now I was using VTK to > perform this operation, but VTK is slow as a turtle, so I thought to > use numpy to get the cells I am interested in. > Basically, for every cell I have the coordinates of its center point > (centroids), named xCent, yCent and zCent. These values are stored in > numpy arrays (i.e., if I have 10,000 cells, I have 3 vectors xCent, > yCent and zCent with 10,000 values in them). What I'd like to do is: > > # Filter cells which do not satisfy Z requirements: > zReq = zMin <= zCent <= zMax > > # After that, filter cells which do not satisfy Y requirements, > # but apply this filter only on cells who satisfy the above condition: > > yReq = yMin <= yCent <= yMax > > # After that, filter cells which do not satisfy X requirements, > # but apply this filter only on cells who satisfy the 2 above conditions: > > xReq = xMin <= xCent <= xMax > > I'd like to end up with a vector of indices which tells me which are > the cells in the original grid that satisfy all 3 conditions. I know > that something like this: > > zReq = zMin <= zCent <= zMax > > Can not be done directly in numpy, as the first statement executed > returns a vector of boolean. Also, if I do something like: > > zReq1 = numpy.nonzero(zCent <= zMax) > zReq2 = numpy.nonzero(zCent[zReq1] >= zMin) > > I lose the original indices of the grid, as in the second statement > zCent[zReq1] has no more the size of the original grid but it has > already been filtered out. > > Is there anything I could try in numpy to get what I am looking for? > Sorry if the description is not very clear :-D > > Thank you very much for your suggestions.
How about (as a pure numpy solution): valid = (z >= zMin) & (z <= zMax) valid[valid] &= (y[valid] >= yMin) & (y[valid] <= yMax) valid[valid] &= (x[valid] >= xMin) & (x[valid] <= xMax) inds = valid.nonzero() ? -- AJC McMorland, PhD candidate Physiology, University of Auckland (Nearly) post-doctoral research fellow Neurobiology, University of Pittsburgh _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion