[Numpy-discussion] numpy where function on different sized arrays
d.warde.farley at gmail.com
Sat Nov 24 19:08:40 EST 2012
I think that would lose information as to which value in B was at each
position. I think you want:
On Sat, Nov 24, 2012 at 5:23 PM, Daπid <davidmenhur at gmail.com> wrote:
> A pure Python approach could be:
> for i, x in enumerate(a):
> for j, y in enumerate(x):
> if y in b:
> Of course, it is slow if the arrays are large, but it is very
> readable, and probably very fast if cythonised.
> On Sat, Nov 24, 2012 at 10:19 PM, David Warde-Farley
> <d.warde.farley at gmail.com> wrote:
> > M = A[..., np.newaxis] == B
> > will give you a 40x60x20 boolean 3d-array where M[..., i] gives you a
> > boolean mask for all the occurrences of B[i] in A.
> > If you wanted all the (i, j) pairs for each value in B, you could do
> > something like
> > import numpy as np
> > from itertools import izip, groupby
> > from operator import itemgetter
> > id1, id2, id3 = np.where(A[..., np.newaxis] == B)
> > order = np.argsort(id3)
> > triples_iter = izip(id3[order], id1[order], id2[order])
> > grouped = groupby(triples_iter, itemgetter(0))
> > d = dict((b_value, [idx[1:] for idx in indices]) for b_value, indices in
> > grouped)
> > Then d[value] is a list of all the (i, j) pairs where A[i, j] == value,
> > the keys of d are every value in B.
> > On Sat, Nov 24, 2012 at 3:36 PM, Siegfried Gonzi <
> sgonzi at staffmail.ed.ac.uk>
> > wrote:
> >> Hi all
> >> This must have been answered in the past but my google search
> >> are not the best.
> >> Given an array A say of dimension 40x60 and given another array/vector B
> >> of dimension 20 (the values in B occur only once).
> >> What I would like to do is the following which of course does not work
> >> the way doesn't work in IDL either):
> >> indx=where(A == B)
> >> I understand A and B are both of different dimensions. So my question:
> >> what would the fastest or proper way to accomplish this (I found a
> >> but think is rather awkward and not very scipy/numpy-tonic tough).
> >> Thanks
> >> --
> >> The University of Edinburgh is a charitable body, registered in
> >> Scotland, with registration number SC005336.
> >> _______________________________________________
> >> NumPy-Discussion mailing list
> >> NumPy-Discussion at scipy.org
> >> http://mail.scipy.org/mailman/listinfo/numpy-discussion
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the NumPy-Discussion