One can use numpy
's extract
function to match an element in an array. The following code matches an element 'a.'
exactly in an array. Suppose I want to match all elements containing '.'
, how would I do that? Note that in this case, there would be two matches. I'd also like to get the row and column number of the matches. The method doesn't have to use extract
; any method will do. Thanks.
In [110]: x = np.array([['a.','cd'],['ef','g.']])
In [111]: 'a.' == x
Out[111]:
array([[ True, False],
[False, False]], dtype=bool)
In [112]: np.extract('a.' == x, x)
Out[112]:
array(['a.'],
dtype='|S2')
You can use the string operations :
>>> import numpy as np
>>> x = np.array([['a.','cd'],['ef','g.']])
>>> x[np.char.find(x, '.') > -1]
array(['a.', 'g.'],
dtype='|S2')
EDIT: As per request in the comments... If you want to find out the indexes of where the target condition is true, use numpy.where :
>>> np.where(np.char.find(x, '.') > -1)
(array([0, 1]), array([0, 1]))
or
>>> zip(*np.where(np.char.find(x, '.') > -1))
[(0, 0), (1, 1)]
How about this?
>>> import numpy as np
>>> x = np.array([['a.','cd'],['ef','g.']])
>>> selector = np.array(['.' in s for s in x.flat]).reshape(x.shape)
>>> x[selector]
array(['a.', 'g.'],
dtype='|S2')
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.