擅长:python、mysql、java
<p>您可以沿着第二个轴矢量化并使用<a href="https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.argmax.html" rel="nofollow">^{<cd1>}</a>获得所需的结果:</p>
<pre><code>>>> midpoint = np.array([[0.2], [0.5], [0.6], [0.3]])
>>> values = np.array([[0.1, 0.3, 0.6, 0.8],
[0.2, 0.3, 0.5, 0.7],
[0.2, 0.5, 0.6, 0.9],
[0.3, 0.1, 0.8, 0.9]])
>>> (values > midpoint).argmax(axis=1) # indexgtr vectorized
array([1, 3, 3, 2]) # first >= occurrence for each row
>>> (values < midpoint).argmax(axis=1)
array([0, 0, 0, 1]) # first < occurrence for each row
</code></pre>
<hr/>
<p><strong>注意:</strong>我将<code><=</code>和{<cd3>}替换为<code><</code>和{<cd5>},以更好地显示矢量化结果。注意,对于<code><</code>的情况,第一行没有任何小于<code>0.2</code>的列,但是返回了<code>0</code>(因为这是一个充满<code>False</code>的行的第一次出现)。在</p>
<p><code>.argmax(axis=1)</code>找到第二个轴上最大值的位置。因为它是一个布尔数组,所以它返回第一个<code>True</code>出现。在</p>