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

Fah*_*tha 8 python search numpy

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

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')
Run Code Online (Sandbox Code Playgroud)

mac*_*mac 9

您可以使用字符串操作:

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

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

>>> np.where(np.char.find(x, '.') > -1)
(array([0, 1]), array([0, 1]))
Run Code Online (Sandbox Code Playgroud)

要么

>>> zip(*np.where(np.char.find(x, '.') > -1))
[(0, 0), (1, 1)]
Run Code Online (Sandbox Code Playgroud)

  • 很好,从来不知道`char` (3认同)