繁体   English   中英

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

[英]finding element of numpy array that satisfies condition

可以使用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')

您可以使用字符串操作

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

这个怎么样?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM