擅长:python、mysql、java
<p>相隔执行时间,我认为你发布的暴力方法与你用文字描述的不符:</p>
<blockquote>
<p>I need to find rows in another 2D array where <strong>each string</strong> of the first array is present.</p>
</blockquote>
<p>您的代码最多只能在那里找到所有行<strong>二维数组的行中至少存在一个<strong>一维数组的字符串。你知道吗</p>
<p>下面的代码使用regex执行words中的请求。你知道吗</p>
<pre><code>import re
pattern = r'*'.join(map(re.escape, np.sort(gene_name_list)))
rows = [''.join(np.sort(x)) for x in fully_split]
res = [re.search(pattern, r) for r in rows]
</code></pre>
<p>因为顺序是不相关的,所以<code>gene_name_list</code>是按字典顺序排序的,字符串是使用regex特殊字符<code>'*'</code>作为定界符连接起来的。这是将要搜索的模式。<br/>
然后,2D数组<code>fully_split</code>的每一行再次按字典顺序排序,字符串连接起来形成一个字符串。对每行执行正则表达式搜索以检查是否存在匹配项。你知道吗</p>
<p><code>res</code>是一个列表,对于那些没有找到匹配项的行,您可以得到<code>None</code>,而对应的<code>MatchObject</code>是找到的匹配项。你知道吗</p>
<p>这说明了这个概念。为了更接近预期结果(存储行的第一个元素),请将最后一行替换为:</p>
<pre><code>res = [l[0] if re.search(pattern, r) else None for r, l in zip(rows, fully_split)]
</code></pre>