擅长:python、mysql、java
<p>argmax()使用C级循环,比Python循环快得多,所以我想即使你用Python编写了一个智能算法,也很难打败argmax(),你可以使用Cython来加速:</p>
<pre><code>@cython.boundscheck(False)
@cython.wraparound(False)
def find(int[:,:] a):
cdef int h = a.shape[0]
cdef int w = a.shape[1]
cdef int i, j
cdef int idx = 0
cdef list r = []
for i in range(h):
for j in range(idx, w):
if a[i, j] == 1:
idx = j
r.append(idx)
break
else:
r.append(-1)
return r
</code></pre>
<p>在我的2000x2000矩阵电脑上,是100us对3ms</p>