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

2024-06-16 13:37:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 方法函数代码innumpyfalse元素np
2条回答

这个怎么样?

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

您可以使用string operations

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

根据评论中的请求编辑:。。。如果要查找目标条件为true的索引,请使用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)]

相关问题 更多 >