找到满足条件的numpy数组元素

时间:2011-12-06 21:27:43

标签: python search numpy

可以使用numpy的{​​{1}}函数来匹配数组中的元素。以下代码完全匹配数组中的元素extract。假设我想要 要匹配包含'a.'的所有元素,我该怎么做?请注意,在这种情况下,将有两个匹配。我还想得到比赛的行数和列号。该方法不必使用'.';任何方法都可以。感谢。

extract

2 个答案:

答案 0 :(得分:9)

您可以使用string operations

>>> import numpy as np
>>> x = np.array([['a.','cd'],['ef','g.']])
>>> x[np.char.find(x, '.') > -1]
array(['a.', 'g.'], 
      dtype='|S2')

编辑:根据评论中的请求...如果您想查找目标条件为何的索引,请使用numpy.where

>>> np.where(np.char.find(x, '.') > -1)
(array([0, 1]), array([0, 1]))

>>> zip(*np.where(np.char.find(x, '.') > -1))
[(0, 0), (1, 1)]

答案 1 :(得分:3)

这个怎么样?

>>> 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')