擅长:python、mysql、java
<p>可以使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.floor.html" rel="nofollow noreferrer">^{<cd1>}</a>对整个操作进行矢量化,并完全避免循环,只要每个方向上像素之间的间隔是均匀的。对于简单的情况,<code>xgrid</code>和<code>ygrid</code>是整数,您可以这样做</p>
<pre><code>X_random_points = ...
Y_random_points = ...
x_pixels = np.floor(X_random_points)
y_pixels = np.floor(Y_random_points)
</code></pre>
<p>如果像素不在整数网格上,则必须知道它们之间的间距。在这种情况下,我建议使用<code>np.arange</code>而不是<code>np.linspace</code>来生成像素位置:</p>
<pre><code>delta_x, delta_y = 0.5, 0.5
xgrid = np.arange(0, 5.1, delta_x)
ygrid = np.arange(0, 5.1, delta_y)
X_random_points = np.random.rand(int(1e7)) * 5
Y_random_points = np.random.rand(int(1e7)) * 5
x_pixels = np.floor(X_random_points / delta_x)
y_pixels = np.floor(Y_random_points / delta_y)
</code></pre>
<p>对于整数情况,您实际上是在做同样的事情,因为<code>delta_x</code>和<code>delta_y</code>都是<code>1</code>。你知道吗</p>