Hello,
Need some help in searching arrays (Im new to numpy) Is it possible to search a array, using another array considering order/sequence?
x = np.array([1,2,3,4,5,6], np.int32)
y = np.array([1,4,3,2,6,5], np.int32)
query= np.array([1,2,3],np.int32)
x versus query True y versus query False
Tried with:
np.searchsorted(x,query) -------> array([0, 1, 2]) np.searchsorted(y,query) -------> array([0, 1, 4])
Thanks
-- View this message in context: http://numpy-discussion.10968.n7.nabble.com/Array-search-considering-order-t... Sent from the Numpy-discussion mailing list archive at Nabble.com.
On 19 December 2013 12:51, rootspin andrei@ruivo.org wrote:
Hello,
Need some help in searching arrays (Im new to numpy) Is it possible to search a array, using another array considering order/sequence?
x = np.array([1,2,3,4,5,6], np.int32)
y = np.array([1,4,3,2,6,5], np.int32)
query= np.array([1,2,3],np.int32)
x versus query True y versus query False
Tried with:
np.searchsorted(x,query) -------> array([0, 1, 2]) np.searchsorted(y,query) -------> array([0, 1, 4])
I'm not sure if I understand your problem do you mean that you want to find subarrays of an array the same way that e.g. "in" for strings tests for substrings:
'asd' in 'qweasdzxc'
True
If so then perhaps this SO question has the answer you want: http://stackoverflow.com/questions/7100242/python-numpy-first-occurrence-of-...
Oscar
On Thu, Dec 19, 2013 at 01:51:30PM +0000, Oscar Benjamin wrote:
Date: Thu, 19 Dec 2013 13:51:30 +0000 From: Oscar Benjamin oscar.j.benjamin@gmail.com To: Discussion of Numerical Python numpy-discussion@scipy.org Subject: Re: [Numpy-discussion] Array search considering order
On 19 December 2013 12:51, rootspin andrei@ruivo.org wrote:
Hello,
Need some help in searching arrays (Im new to numpy) Is it possible to search a array, using another array considering order/sequence?
x = np.array([1,2,3,4,5,6], np.int32)
y = np.array([1,4,3,2,6,5], np.int32)
query= np.array([1,2,3],np.int32)
x versus query True y versus query False
Tried with:
np.searchsorted(x,query) -------> array([0, 1, 2]) np.searchsorted(y,query) -------> array([0, 1, 4])
I'm not sure if I understand your problem do you mean that you want to find subarrays of an array the same way that e.g. "in" for strings tests for substrings:
'asd' in 'qweasdzxc'
True
If so then perhaps this SO question has the answer you want: http://stackoverflow.com/questions/7100242/python-numpy-first-occurrence-of-...
Oscar _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Thank you Oscar for your answer.
Sorry if I was not clear enough. The SO question is alike what I want. However, in my problem, Im not sure if there will be only one occurence. What I do expect is: Given one array (big one), to retrieve indexes for "query array" occurences. Something like that:
array1(big one) - 1,2,3,4,5,6,7,1,2,3,4,5,7,8,9,1,2,3,4,5,6,7,8 array2(query) - 1,2,3 array3(another query) - 8,7,6
result (array1 versus array2) - 0,7,15 (position for match) result (array1 versus array3) - no matches
Thanks for the help.
On 19 December 2013 16:49, Andrei Rozanski andrei@ruivo.org wrote:
Sorry if I was not clear enough. The SO question is alike what I want. However, in my problem, Im not sure if there will be only one occurence. What I do expect is: Given one array (big one), to retrieve indexes for "query array" occurences. Something like that:
array1(big one) - 1,2,3,4,5,6,7,1,2,3,4,5,7,8,9,1,2,3,4,5,6,7,8 array2(query) - 1,2,3 array3(another query) - 8,7,6
result (array1 versus array2) - 0,7,15 (position for match) result (array1 versus array3) - no matches
If you look more closely at the SO question you'll see that it does answer your problem. The top-rated answer shows how to get an boolean array indicating where the matches are. In your case that would be
[True, False, False, False, False, False, False, True, False, False, False, False, False, False, False, True, False, False, False, False, False]
Now just use the numpy.where function to get the indices of the True value from this array.
Oscar
On Fri, Dec 20, 2013 at 11:19:49AM +0000, Oscar Benjamin wrote:
Date: Fri, 20 Dec 2013 11:19:49 +0000 From: Oscar Benjamin oscar.j.benjamin@gmail.com To: Discussion of Numerical Python numpy-discussion@scipy.org Subject: Re: [Numpy-discussion] Array search considering order
On 19 December 2013 16:49, Andrei Rozanski andrei@ruivo.org wrote:
Sorry if I was not clear enough. The SO question is alike what I want. However, in my problem, Im not sure if there will be only one occurence. What I do expect is: Given one array (big one), to retrieve indexes for "query array" occurences. Something like that:
array1(big one) - 1,2,3,4,5,6,7,1,2,3,4,5,7,8,9,1,2,3,4,5,6,7,8 array2(query) - 1,2,3 array3(another query) - 8,7,6
result (array1 versus array2) - 0,7,15 (position for match) result (array1 versus array3) - no matches
If you look more closely at the SO question you'll see that it does answer your problem. The top-rated answer shows how to get an boolean array indicating where the matches are. In your case that would be
[True, False, False, False, False, False, False, True, False, False, False, False, False, False, False, True, False, False, False, False, False]
Now just use the numpy.where function to get the indices of the True value from this array.
Oscar _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Hi Oscar,
Thank you for the help. Indeed. My lack of knowledge on numpy functions didnt aloud my to get that.
That works for me.
best regards.