|
From: <jou...@gm...> - 2004-11-14 16:09:03
|
Hi,
In Matlab, the command
[i,j] =3D find(mat >=3D 3)
causes i and j to hold the indices where the condition holds. (If
there is only one output argument, it will hold indices to the
flattened version of the condition.) Matplotlib's mlab.find() seems to
work for one-dimensional arrays only.
Here's what I'm using to emulate Matlab's find; it only seems to work
with Numeric, not numarray, and I have no idea whether this is an
efficient way to achieve the goal. I was going to suggest that the
utility be included in matplotlib, but perhaps it should then be
generalized to work with numarray as well. I wonder if anyone has any
ideas on how to do this? I'm a newcomer to matplotlib (and Numeric,
etc.), so please do point out if there is a simpler way to achieve the
effect of Matlab's find.
def find(condition):
"""
Return the indices where condition is true.
For arrays of N>=3D2 dimensions, returns a tuple T of N arrays
such that the condition is true at indices (T[0][i],...,T[N-1][i]).
"""
sh =3D condition.shape
if len(sh) =3D=3D 1:
return nonzero(condition)
idx =3D indices(sh)
cond =3D ravel(condition)
return tuple([compress(cond, ravel(idx[i]))=20
for i in range(len(sh))])
--=20
Jouni K Sepp=E4nen
http://www.iki.fi/jks
|