擅长:python、mysql、java
<p>通常您会使用<code>np.argwhere(e == 2)</code>:</p>
<pre><code>In [4]: e = np.array([[1,2,3],[4,5,6]])
In [6]: np.argwhere(e == 2)
Out[6]: array([[0, 1]])
</code></pre>
<p>如果您确实需要指定的输出,您必须添加一个额外的<code>[0]</code></p>
^{pr2}$
<p>但是,您提供的输入不是标准数字数组,而是<code>object</code>数组,因为<code>len(e[0]) != len(e[1])</code>:</p>
<pre><code>In [1]: e = np.array([[1,2],[4,5,6]])
In [3]: e
Out[3]: array([list([1, 2]), list([4, 5, 6])], dtype=object)
</code></pre>
<p>这使得numpy的实用性和效率大大降低。你必须采取以下措施:</p>
<pre><code>In [26]: res = []
...: for i, f in enumerate(e):
...: g = np.array(f)
...: w = np.argwhere(g==2)
...: if len(w):
...: res += [(i, v) for v in w]
...: res = np.array(res)
</code></pre>
<p>假设这是一个错误,如果您对最接近2的值感兴趣,即使2不存在,您也必须执行以下操作:</p>
<pre><code>In [35]: np.unravel_index((np.abs(e - 2.2)).argmin(), e.shape)
Out[35]: (0, 1)
</code></pre>
<p>这里我选择2.2作为示例值。在</p>