擅长:python、mysql、java
<p>灵感来自Divakar的<a href="https://stackoverflow.com/a/45857632/4909087">^{<cd1>}</a>,这应该是<em>快</em>。你知道吗</p>
<pre><code>def indices_for(m, n):
i, j = np.ogrid[:m, :n]
v = np.empty((m, n, 2), dtype=np.uint32)
v[..., 0] = i
v[..., 1] = j
v.shape = (-1, 2)
return v
</code></pre>
<p/>
<pre><code>>>> indices_for(3, 2)
array([[0, 0],
[0, 1],
[0, 2],
[1, 0],
[1, 1],
[1, 2]])
</code></pre>
<hr/>
<pre><code>m, n = 10000, 10000
%timeit indices_for(m, n)
607 ms ± 9.12 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit np.argwhere(np.ones((m, n)))
4.69 s ± 225 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
</code></pre>